title image


Smiley Re: Wann muss man bei SELECT auf mehreren Tabellen Tabellenname voranstelle
Innerhalb einer Tabelle müssen alle Feldnamen eindeutig sein, es können aber identischen Feldnamen in unterschiedlichen Tabellen verwendet werden. Soweit kein Problem. Wenn du in einem SELECT aber mehrere Tabellen zusammenführst, die identische Feldnamen verwenden, kommt es zu einer "Kollision". Erst dann und nur bei diesen Feldern muss für Eindeutigkeit gesorgt werden, indem der Tabellenname vorangestellt wird. Beispiel:



Tabelle1 (FeldA, FeldB, FeldC)

Tabelle2 (FeldA, FeldD, FeldE)



Wenn diese beiden Tabellen in einem SELECT vorkommen:



SELECT FeldA, FeldB, FeldC, FeldD, FeldE

FROM Tabelle1

INNER JOIN Tabelle2 ON Tabelle1.FeldA = Tabelle2.FeldA



Dann weiss das DBMS nur bei FeldA nicht, aus welcher Tabelle dies kommen soll, und muss durch Voranstellen des Tabellennamens qualifiziert werden:



SELECT Tabelle1.FeldA, FeldB, FeldC, FeldD, FeldE

FROM Tabelle1

INNER JOIN Tabelle2 ON Tabelle1.FeldA = Tabelle2.FeldA



Um sich Tipparbeit zu sparen, kann man auch Aliasnamen für die Tabellen definieren und stattdessen diese benutzen:



SELECT x.FeldA, FeldB, FeldC, FeldD, FeldE

FROM Tabelle1 x

INNER JOIN Tabelle2 y ON x.FeldA = y.FeldA



Bei den Feldnamen, die nur in einer der selektierten Tabellen vorkommen, hat das DBMS natürlich leichtes Spiel, da dann natürlich nur die jeweilige Tabelle angenommen werden kann, in der ein Feld eines bestimmten Namens auch vorkommt. Ich habe es mir trotzdem zur Gewohnheit gemacht, bei Verbindung mehrerer Tabellen immer und überall den Tabellenalias voranzustellen:



SELECT x.FeldA, x.FeldB, x.FeldC, y.FeldD, y.FeldE

FROM Tabelle1 x

INNER JOIN Tabelle2 y ON x.FeldA = y.FeldA

Meine Microsite || SQL-Tips.de || D-3 (2007/08) / AI-29 (2006)


geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: