MS-Sql:Gleiche Einträge nur 1 mal ausgeben
Andreas Greiner
- datenbank
Liebe SelfhtmlerInnen!
Ich habe folgendes Problem:
Ich habe folgende Tabelle:
Name | Nummer
Max | 1
Max | 10
Max | 100
Ilse | 2
Ilse | 20
Ilse | 200
Hias | 3
Hias | 30
Hias | ...
Jetzt möchte ich daraus immer nur 1 Max, 1 Ilse und 1nen Hias mit der niedrigsten Nummer.
Ich hoffe ich habe das verständlich dargebracht.
Hat jemand eine Idee von euch?
lg,
Andi
Liebe SelfhtmlerInnen!
Ich habe folgendes Problem:
Ich habe folgende Tabelle:
Name | Nummer
Max | 1
Max | 10
Max | 100
Ilse | 2
Ilse | 20
Ilse | 200
Hias | 3
Hias | 30
Hias | ...
Jetzt möchte ich daraus immer nur 1 Max, 1 Ilse und 1nen Hias mit der niedrigsten Nummer.
Ich hoffe ich habe das verständlich dargebracht.
Hat jemand eine Idee von euch?
lg,
Andi
Entweder gehts mit "SELECT DISTINCT", oder du gruppierst und nimmt die niedrigste Nummer mit "SELECT MIN(nummerspalte) AS minnummer,weiterespalten WHERE ... GROUP BY namespalte".
- Sven Rautenberg
Hi Andy
Max | 1
Max | 10
Max | 100
Ilse | 2
Ilse | 20
Ilse | 200
Hias | 3
Hias | 30
Hias | ...
Jetzt möchte ich daraus immer nur 1 Max, 1 Ilse und 1nen Hias mit der niedrigsten Nummer.
Was du brauchst, ist group by der select müsste dann so aussehen ca.
select name, min(nummer)
from tabelle
where bedingungen
group by name
order by sorts
select distinct wie Sven vorschlägt wird dir wenig bringen da der nicht zwingend den niedrigsten Eintrag bringt sondern im Normalfall den Eintrag, der als erster in der DB war, wobei man sich auch darauf nicht verlassen kann.
Gruss Daniela
Hallo,
select distinct wie Sven vorschlägt wird dir wenig bringen da der nicht zwingend den niedrigsten Eintrag bringt sondern im Normalfall den Eintrag, der als erster in der DB war, wobei man sich auch darauf nicht verlassen kann.
Bzw. ist 'min()' ohne 'group by' nicht möglich, und 'distinct' würde wieder alle DatenSätze bringen, sofern keine Doubletten (name _und_ nummer sind gleich wie bei einem anderen Record) vorliegen.
Also bleibt nur die von Dir vorgeschlagene Lösung. Wobei, der Vollständigkeit halber, dazugesagt werden sollte, daß, sollten zusätzliche Spalten ausgegeben werden, diese entweder auhc mit 'group by' erfasst oder aber mittels Aggregat-Funktion (min(),max(),sum()...) abgefragt werden.
Grüße
Klaus
Hoi,
Bzw. ist 'min()' ohne 'group by' nicht möglich
Das ist so nicht wahr, zumindest nicht fuer alle DBMS.
SELECT MIN/MAX/SUM/...(spalte) FROM tabelle
Sollte sowohl bei MySQL als auch bei PostGreSQL gehen.
Gruesse,
CK
Hallo,
Bzw. ist 'min()' ohne 'group by' nicht möglich
Das ist so nicht wahr, zumindest nicht fuer alle DBMS.
SELECT MIN/MAX/SUM/...(spalte) FROM tabelle
Sollte sowohl bei MySQL als auch bei PostGreSQL gehen.
Wo denk ich nur hin, ich Dussel. Natürlich funktionieren Aggregat-Funktionen auch über die gesamte Tabelle. War wohl etwas zu 'problem-orientiert';-)
Danke für die Richtigstellung.
Grüße
Klaus