eine Abfrage -> zwei Ergebnismengen
Knusperklumpen
- datenbank
Hi,
ich habe eine Tabelle und möchte eine Abfrage machen, die mir 2 Ergebnismengen liefert.
Bsp:
ID WERT
1 10
2 10
3 11
4 12
5 11
6 12
Meine beiden Ergebnisse sollten jetzt zum einen alle Zeilen ermitteln bei denen WERT=10 und als zweites Ergebnis alle Zeilen bei denen WERT!=10 ist, also so.
Ergebnis 1:
ID WERT
1 10
2 10
Ergebnis 2:
ID WERT
3 11
4 12
5 11
6 12
Wie gesagt, ich möchte einen Abfrage machen. Ich habe schon mit Union probiert, das funktioniert im Prinzip auch, liefert aber nur eine Ergebnismenge und nicht 2 seperate.
Funktioniert das überhaupt oder liefert SQL die Ergebnisse immer Zeilenweise?
Danke und mfg
Knusperklumpen
hi,
ich habe eine Tabelle und möchte eine Abfrage machen, die mir 2 Ergebnismengen liefert.
_Eine_ Abfrage hat immer _eine_ Ergebnismenge.
Meine beiden Ergebnisse sollten jetzt zum einen alle Zeilen ermitteln bei denen WERT=10 und als zweites Ergebnis alle Zeilen bei denen WERT!=10 ist
Also willst du in Wirklichkeit sowieso schon mal _alle_ Datensätze haben - du möchtest sie nur unterschiedlich verarbeiten.
Wie gesagt, ich möchte einen Abfrage machen. Ich habe schon mit Union probiert, das funktioniert im Prinzip auch, liefert aber nur eine Ergebnismenge und nicht 2 seperate.
Funktioniert das überhaupt oder liefert SQL die Ergebnisse immer Zeilenweise?
Nein, das geht so m.E. nicht.
Du könntest natürlich in _einer_ Abfrage, die alle Datensätze ausliest, schon eine Sortierung vornehmen - so dass die mit wert=10 zuerst kommen, und die restlichen danach. Und darauf dann beim Durchlaufen der Ergebnismenge mit einer simplen Form von Gruppenwechsel reagieren o.ä.
gruß,
wahsaga
Hi,
also das Ergebnis _einer_ Abfrage ist auch immer _eine_ Ergebnismenge. Wenn du also mittels Union aus zwei Abfragen eine machst, bekommst du auch ein Ergebnis raus. Du kannst allerdings die Mengen kenntlich machen, in dem du z.B. bei beiden eine neue Spalte anfügst in der du einträgst aus welcher Abfrage die Sätze stammen, wobei das in deinem Fall ja auch einfach an 10 oder !=10 erkennbar ist.
SELECT <werte...>, 'gleich_10' AS quelle
UNION
SELECT <werte...>, 'ungleich_10' AS quelle
Wenn du zwei echte Ergebnismengen brauchst, dann musst du zwei Abfragen nehmen.
MfG
Rouven