Entwickler-Ecke

Datenbanken (inkl. ADO.NET) - DISTINCT Anweisung in einem SQL Befehl


DennisXX - Mi 08.02.12 14:31
Titel: DISTINCT Anweisung in einem SQL Befehl
Macht es eigentlich einen semantischen Sinn, die DISTINCT Anweisung für zwei Spalten in einem SQL Befehl auszuführen? Gibt es Fälle, wo das wirklich sinnig erscheint? Also zu meine ich bspw.:

SQL-Anweisung
1:
2:
3:
SELECT DISTINCT tabl1.FeldA, DISTINCT tab1.FeldA, tab2.FeldB
FROM tab1 INNER JOIN tab2
ON tab1.FeldX = tab2.FeldX

Gruß
Dennis

Moderiert von user profile iconTh69: SQL-Tags hinzugefügt


Ralf Jansen - Mi 08.02.12 14:45

Distinct bezieht sich immer auf die ganze Zeile also alle in der Select Klausel benannten Felder und nicht auf ein einzelnes Feld. Dein Statement wird also nicht funktionieren.

Ein Distinct ähnliche Funktion die das könnte was du andeutest kann ich mir nicht vorstellen. Welcher Distinct Wert einer Spalte gehört denn dann zu welchem Satz der anderen Spalten?
In deinem Beispeil wenn es mehrere Werte in FeldB gibt die zu einem FeldA passen, welcher dieser Werte in FeldB willst du dann anzeigen wenn du durch den ~Distinct~ schon gesagt ich will den Wert in FeldA nur einmal sehen und hast damit ja auch nur eigentlich ein Wert für FeldB den du anzeigen kannst? Das kann nicht funktionieren. In sofern ist die Frage nach der Semantik auch für eine theoretische Distinct Funktion mit dem von dir gedachten Verhalten zu verneinen.