Ich habe eine Anfrage, die UNION
zwei einigermaßen ähnliche Datensätze, die jedoch beide einige Spalten enthalten, die in dem anderen nicht vorhanden sind (d. h. die Spalten haben NULL-Werte in der resultierenden UNION
.)
Das Problem ist, dass ich Folgendes tun muss ORDER
die sich daraus ergebenden Daten unter Verwendung der Spalten, die nur in der einen oder der anderen Menge vorhanden sind, um die Daten in ein für die Software-Seite geeignetes Format zu bringen.
Zum Beispiel: Tabelle1 hat Felder ID, Cat, Price
. Tabelle2 hat Felder ID, Name, Abbrv
. El ID
ist den beiden Tabellen gemeinsam.
Meine Abfrage sieht in etwa so aus:
SELECT t1.ID, t1.Cat, t1.Price, NULL as Name, NULL as Abbrv FROM t1
UNION
SELECT t2.ID, NULL as Cat, NULL as Price, t2.Name, t2.Abbrv FROM t2
ORDER BY Price DESC, Abbrv ASC
El ORDER BY
ist der Punkt, an dem ich nicht weiterkomme. Die Daten sehen wie folgt aus:
100 Balls 1.53
200 Bubbles 1.24
100 RedBall 101RB
100 BlueBall 102BB
200 RedWand 201RW
200 BlueWand 202BW
...aber ich möchte, dass es so aussieht:
100 Balls 1.53
100 RedBall 101RB
100 BlueBall 102BB
200 Bubbles 1.24
200 RedWand 201RW
200 BlueWand 202BW
Ich hoffe, dass dies in T-SQL erledigt werden kann.
0 Stimmen
Verknüpfen die IDs Ihre T2-Produkte nicht mit dem T1-Produkt? Wenn nicht, woher wissen Sie dann, dass die RedWand und die BlueWand direkt nach Bubbles kommen?
0 Stimmen
Er sagt in der Frage: "Tabelle2 hat Felder ID (dieselbe wie in Tabelle1)"
0 Stimmen
Vielen Dank für die vielen Antworten; dies ist zwar erst meine erste Frage, aber die Gemeinschaft scheint schon jetzt großartig zu sein. Auch für diejenigen, die die "Architektur", die meine Frage impliziert, kritisieren würden - bitte beachten Sie, was ich oben und unten in der akzeptierten Antwort gesagt habe: Dies ist ein dummes Beispiel! Die "Tabellen" in meiner Frage stellen eigentlich zwei sehr komplexe SELECT-Abfragen dar, die mehrere Tabellen und Unterabfragen mit Aggregaten und berechneten Feldern umfassen. Nochmals vielen Dank!