SQL eingeschränkter Satz von Kombinationen
-
21-12-2019 - |
Frage
Ich habe eine Tabelle mit den Spalten A, B, C und möchte alle Kombinationen von Datensätzen erhalten, die {B, C} eindeutig haben.Das heißt, sowohl der B-Wert als auch der C-Wert werden nur einmal in einem Satz angezeigt.
Haben Sie Ideen, wie Sie das erreichen können?Ich gehe davon aus, dass die Ausgabe eine Kombination in einer einzelnen Zeile enthalten muss, was kein Problem darstellt.
Um es hier zu verdeutlichen, ist ein Beispiel:
- 1,1,0
- 6,1,1
- 1,1,2
- 3,2,0
- 5,2,1
- 1,2,3
Eine mögliche Kombination ist {1,1,0}, {1,2,3}, während {6,1,1}, {5,2,1} dies nicht ist, da der C-Spaltenwert '1' nicht eindeutig ist.Was ich gerne bekommen würde, ist eine solche Ausgabe:
1,1,0,1,2,3
6,1,1,1,2,3
JETZT wird die Ausgabe n-Tupel mit eindeutigen B, C-Werten sein.
Lösung
Ich denke, du willst eine seltsame Version eines Self Joins:
select t1.*, t2.*
from table t1 join
table t2
on t1.b <> t2.b and t1.c <> t2.c;
Dies gibt alle Paare aus der Tabelle zurück, in der die b
spalten haben unterschiedliche Werte und die c
spalten haben unterschiedliche Werte.
Andere Tipps
Dies ist, wozu Gruppe by ist.Es kombiniert alle Datensätze mit den gleichen Werten in der Gruppe mit der Liste in einer einzigen Zeile.
generasacodicetagpre.Die Frage ist ein bisschen vage, wenn Sie nur die Werte der B & C-Lösung von @linger verwenden möchten, wenn Sie alle Felder für Datensätze verwenden möchten, die über eine B-, C-Kombination verfügen, die in diesem Datensatz auftritt, aber nirgendwo anders ist
generasacodicetagpre.