Dinge einfach zu halten, gehe ich davon habe eine Tabelle Kunden und die Produkte, die sie halten, wie so enthalten:Finding Zeilen, in denen mehrere Kriterien mit vielen zu vielen Beziehungen erfüllt sind
Client_ID Product_Held
1 Product1
1 Product2
1 Product3
2 Product1
2 Product2
3 Product1
3 Product1
Ein Kunde halten können eine beliebige Kombination von Produkten und Vielfache des gleichen Produkts.
Ich möchte in der Lage sein, meine Abfrage auf alle Clients zu beschränken, die nur Product1 und Product2 enthalten, und ich habe ein wenig Schwierigkeiten, herauszufinden, die Logik benötigt. Wenn ich mit Product1 und Product2 nach allen Kunden suche, werden meine Ergebnisse diejenigen einschließen, die nur Product1 besitzen, sowie diejenigen, die nur Product2 besitzen.
In der Vergangenheit habe ich nur meine Ergebnisse in Excel gedumpt, eine Spalte, die die beiden Felder kombiniert, dh 1Product1, 1Product2, und schreiben eine schnelle Formel, die im Grunde sagt, wenn 1Product1 existiert und 1Product2 existiert, dann als markieren OK, und alles andere ausfiltern, aber vermutlich sollte es eher trivial sein, um durch meine Abfrage stattdessen zu erreichen.
Ich fühle mich wie ich so etwas haben soll:
WHERE Client_ID exists in Client_ID + Product_Held AND Product_Held = 'Product1'
AND Client_ID exists in Client_ID + Product_Held AND Product_Held = 'Product2'
aber Probleme mit der Syntax, auch nicht sicher, ob dies eine gültige Methode?
Danke, das hat perfekt funktioniert. Obwohl ich durch meine Aussage einige Probleme mit meiner Gruppe hatte. Der Einfachheit halber habe ich es als eine Tabelle ausgedrückt, aber es sind tatsächlich mehrere Tabellen mit Joins, und die Anweisung würde nur funktionieren, wenn ich jedes einzelne Feld in meine select-Anweisung, in meine Gruppe by-Anweisung eingeschlossen hätte, dh: SELECT Field 1, Feld2, Feld3, GROUP BY Feld1, Feld2, Feld3. Ich lerne immer noch die Seile mit SQL, müssen GROUP BY-Anweisungen immer alle Felder innerhalb Ihrer SELECT-Anweisung enthalten? – Dekks
Am Ende habe ich das als Unterabfrage ausgeführt und dann meine Hauptabfrage sagen wo client_id in (Abfrage mit Gruppenklausel). Nicht sicher, ob es der effizienteste Weg ist, aber das ist eine Frage für einen anderen Tag! – Dekks