DISTINCT und die Eliminierung von doppelten Einträgen

Angenommen es sollen die ID's und Namen von nur den Leuten ausgegeben werden die eine Antiquität verkauft haben. Natürlich soll jeder Verkäufer nur einmal aufgeführt werden, da hier nicht die Inforamtion abgefragt wird wie oft verkauft wurde. Dieses bedeutet, dass über SQL bedeutet werden muss doppelte Einträge aus der Selektion zu entfernen. Um dies zu erreichen wird der Operator DISTINCT benutzt.

Zuerst wird ein "equijoin" zur AntiquitätenBesitzer Tabelle gebraucht um die Daten über den Namen der Person zu bekommen. Da die VerkäuferID-Spalte in der Antiquität Tabelle ein fremder Schlüssel zur AntiquitätenBesitzer-Tabelle darstellt, wird ein Verkäufer nur dann aufgeführt wenn ein Datensatz in AntiquitätenBesitzer mit der ID und dem Namen besteht. Da doppelte vermieden werden sollen, wird der DISTINCT Operator auf den Spalten-Namen angewendet bei dem doppelte auftauchen können.

Um das ganze zu verkomplizieren, wollen wir auch noch die Liste alphabetisch nach Namen und Vornamen geordnet bekommen. Dazu wird eine ORDER BY Klausel eingefüht:


\begin{code}
SELECT DISTINCT VERKÄUFERID, BESITZERNAME, BESITZERVORNAME
FROM ...
... VERKÄUFERID = BESITZERID
ORDER BY BESITZERNAME, BESITZERVORNAME;
\end{code}

In diesem Fall, da jeder etwas verkauft hat, wird eine alphabetisch geordnete Liste aller Besitzer zurückgegeben. Diese Art ein JOIN durchzuführen wird "INNER JOIN" genannt.