Ambiguous column in Query

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

hstoellinger
*
Beiträge: 16
Registriert: Do, 04.10.2007 12:35

Ambiguous column in Query

Beitrag von hstoellinger »

Ich will mit einem Filter eine Teilmenge aus einem Join mehrerer Tabellen anzeigen. Dabei erhalte ich folgenden Fehler:
The data content could not be updated
SQL Status: 23000
Error code: 1052
Column 'nummer' in where clause is ambiguous
The SQL command leading to this error is:
SELECT `veranstaltungen`.`nummer` AS `VeranstNr`, `veranstaltungen`.`bezeichnung`, `veranstaltungen`.`begDatum`, `veranstaltungen`.`begUhrZeit`, `veranstaltungen`.`endDatum`, `veranstaltungen`.`endUhrZeit`, `veranstaltungen`.`ort`, pFVTName( `personen`.`famName`, `personen`.`vorName`, `personen`.`titel` ) AS `name`, `anwesenheit`.`mitfahrer`, `anwesenheit`.`anwesend`, `statAnwesenheit`.`code` AS `statCode`, `statAnwesenheit`.`bezeichnung` AS `status`, `anwesenheit`.`grund` FROM `rainermusik`.`anwesenheit`, `rainermusik`.`veranstaltungen`, `rainermusik`.`personen`, `rainermusik`.`statAnwesenheit`, `rainermusik`.`abwGrund` WHERE ( ( `anwesenheit`.`veranstNr` = `veranstaltungen`.`nummer` AND `anwesenheit`.`persNr` = `personen`.`nummer` AND `statAnwesenheit`.`code` = `anwesenheit`.`statAnw` AND `abwGrund`.`code` = `anwesenheit`.`grund` ) AND ( ( `nummer` = 504 ) )

Der Fehler liegt offensichtlich darin, dass OO-Base trotz der Anzeige des "Alias"-Namens (=VeranstNr) bei der Spezifikation des Filters dann "...AND ( ( `nummer` = 504 ) )" generiert. Die Sache funktioniert, wenn man z. B. im Design-Modus als Criterion "504" angibt.
Beste Grüße
H. Stöllinger, Salzburg :o
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Ambiguous column in Query

Beitrag von Barlee »

Hallo hstoellinger,

die Spalte 'nummer' kommt in den Tabellen "Personen" und "Veranstaltungen" vor. Am Beginn Deiner Abfrage definierst Du einen Alias "VeranstNr"

Code: Alles auswählen

`veranstaltungen`.`nummer` AS `VeranstNr`
Wenn ich Dich nun richtig verstanden habe, dann versuchst Du in der WHERE-Klausel über diesen Alias die Spalte "Nummer" anzusprechen.
Hier solltest Du den vollen Namen verwenden, also

Code: Alles auswählen

AND ( ( 'veranstaltung'.`nummer` = 504 ) )
Gruß Barlee
hstoellinger
*
Beiträge: 16
Registriert: Do, 04.10.2007 12:35

Re: Ambiguous column in Query

Beitrag von hstoellinger »

Ich weiß schon, dass man "eindeutige" Feldnamen verwenden muß. Das Problem ist nur Folgendes:
Ich setze zunächst eine Query ab, in der nicht nach einer bestimmten Nummer" (="veranstaltung.nummer") eingeschränkt wird.
Alle passenden Tupel werden daraufhin angezeigt.
Nun will ich mit einem "standard filter" nur die Daten EINER Veranstaltung abfragen. In der
Dialog Box des Standardfilters wird zwar jetzt der Alias für "veranstaltung.nummer" (in meinem Fall "VeranstNr") angezeigt, im erzeugtten SQL-Statement jedoch nur "nummer" in
die WHERE clause übernommen. Das kann natürlich nicht funktionieren. Es sollte der Alias verwendet werden. Man kann sicher nicht verlangen, dass in unterschiedlichen Tabellen auch alle Feldnamen unterschiedlich sein müssen. "ID"-Felder haben oft denselben Namen!
Gesperrt