Seite 1 von 1

Ambiguous column in Query

Verfasst: Di, 30.10.2007 23:24
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

Re: Ambiguous column in Query

Verfasst: Mi, 31.10.2007 10:56
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

Re: Ambiguous column in Query

Verfasst: Mi, 31.10.2007 16:03
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!