Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#11

Re: Unknown column bei TSQLQuery auf zwei Tabellen (Left joi

  Alt 11. Mai 2009, 13:09
Gleichnamige Felder sind verboten:
SELECT allocrights.rightID, rights.rightID, ... FROM ... Abfragen, die potentiell gleichnamige Felder produzieren können, sind ebenfalls verboten:
SELECT * FROM allocrights, rights WHERE ... SELECT allocrights.*, rights.* FROM allocrights, rights WHERE ... Erlaubt ist dagegen folgende Abfrage:
SELECT allocrights.*, rights.RightName FROM allocrights, rights WHERE ... Wie man sieht, darf man für eine Tabelle den *-Platzhalter verwenden.
Alle anderen Felder muss man einzeln in der Feldliste angeben und sicherstellen, dass gleichnamige Felder nicht auftreten.
Mit dem AS-Operator kann man gleichnamige Felder verhindern:
SELECT allocrights.rightID, rights.rightID AS r_rightID, ... FROM ...
DBMS haben bestimmte Strategien, falls gleichnamige Felder auftreten:
* an Feldname wird eine laufende Nummer angehängt (rightID, rightID1, rightID2, ...)
* Feldname wird vollqualifiziert indem der Tabellenname vorne angehängt wird
* in der Ergebnismenge kommen die Felder mehrfach vor (was die Anwendung vor unlösbare Probleme stellt)
* es wird ein Fehler ausgelöst

Da jedes DBMS etwas anderst reagiert, gibt es nur den Weg, grundsätzlich alle Abfragen
so zu schreiben, dass gleichnamige Felder nie auftreten können
.
Andreas
  Mit Zitat antworten Zitat