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.