Wählen Sie den übergeordneten Datensatz mit allen untergeordneten Elementen in SQL aus

8

Nehmen wir an, ich habe zwei Tabellen, "Parent" und "Child". Parent-to-Child ist eine Viele-Viele-Beziehung, die durch eine Standard-Querverweistabelle implementiert wird.

Ich möchte alle Datensätze von Parent finden, die von ALLEN Mitgliedern einer gegebenen Gruppe von Child mit SQL referenziert werden (insbesondere MS SQL Server T-SQL; 2005 Syntax ist akzeptabel).

Sagen wir zum Beispiel:

  • Listenelement
  • Eltern Alice
  • Eltern Bob
  • Kind Charlie verweist auf Alice, Bob
  • Kind David verweist auf Alice
  • Kind Eva referiert Bob

Meine Ziele sind:

  • Wenn ich Children Charlie habe, möchte ich, dass das Ergebnis Alice und Bob enthält
  • Wenn ich Kinder Charlie und David habe, möchte ich, dass das Ergebnis Alice und NICHT Bob enthält.
  • Wenn ich Kinder Charlie, David und Eva habe, möchte ich, dass die Ergebnismenge niemanden enthält.
Craig Walker 26.01.2009, 18:02
quelle

3 Antworten

6

Unter Berufung auf einen numerischen Trick (wobei die Anzahl der Eltern-Kind-Links = die Anzahl der Kinder ist, ist dieser Elternteil mit allen Kindern verknüpft):

%Vor%     
Cade Roux 26.01.2009, 18:11
quelle
2

Hier ist eine Antwort.

SQL-Abfrage: Simulieren eines "UND" über mehrere Zeilen statt einer Unterabfrage

Und hier ist eine spezielle Anwendung dieses Problems.

%Vor%     
Amy B 26.01.2009 18:15
quelle
2

(Ich denke, du hast gesagt "Kind Eva bezieht sich auf Eva" du meinst "Kind Eva bezieht sich auf Bob", richtig?)

Ich glaube, ich habe es ... sieht hässlich aus ... das Geheimnis ist die doppelte Verneinung ... das heißt, jeder, für den es wahr ist, ist derselbe wie nicht jeder, für den es falsch ist ... (ok, ich habe Probleme mit meinem Englisch, aber ich denke du verstehst was ich meine)

%Vor%

Nun, ich hoffe es hilft ...

    
opensas 26.01.2009 18:53
quelle