MoRtAlAn
21-05-2002, 10:17
ich möchte in einer tabelle die Ausgabe nach einer Spalte sortieren, die anderen Spalten sollen aber trotzdem angezeigt werden.
Beispiel:
SELECT DISTINCT spalte01 FROM tabelle01 ORDER BY spalte01
mit diesem Befehl lasse ich mit doppelte Datensätze immer nur einmal anzeigen, allerdings bekomme ich es nicht hin, andere Spalten mit auszugeben, die nicht von DISTINCT betroffen sein sollen.
Idee ??
gruss
Die anzuzeigenden Spalten müssen natürlich ebenfalls im SQL-Statement aufgeführt sein.
Nach Spalte01 muss dann Spalte02,Spalte03 usw stehen. Das sollte dann funktionieren.
Grüsse
DISTINCT bezieht sich immer auf sämtliche Spalten der Query:
DISTINCT and DISTINCTROW are synonyms and specify that duplicate rows in the result set should be removed. (http://www.mysql.com/doc/S/E/SELECT.html)
ich bin der meinung, du meinst nicht
select distinct, denn das entfernt alle mehrfachen tupeln einer relation, sondern group by (alle tupel werden um eine spalte gruppiert)
distinct reduziert von der semantik her, wie bereits erwähnt, die relation um ganze Reihen
willst du 3 spalten auswählen, wo bei die erste nicht doppelt vorkommen soll, wäre das z.B.:
select r.spalte1,d.spalte2,d.spalte3 from r,d where [Bedingung] group by r.spalte1
hieraus ist bereits ersichtlich, dass das ganze natürlich nur funktioniert, wenn die anderen Spaltenwerte für jeden Eintrag von r.spalte1 identisch sind (z.B. bei Verbunden zwischen Tabellen), bzw. eine Aggregatfunktion verwendet wird.
z.B.: select r.kundennummer,count(r.bestellungID) from r where kundennummer = $kunde group by r.kundennummer (aggregatfunktion, zählt bestellungen pro kunde)
hopeThatHelps