SQL: Wie man eine einzelne ID ("Zeile") auswählt, die mehrere Kriterien aus einer einzelnen Spalte erfüllt

Ich habe einen sehr schmalen Tisch: user_id, Abstammung.

Die user_id-Spalte ist selbsterklärend.

Ist die Abstammung Spalte enthält das Land, in dem der Benutzer die Vorfahren der Hagel.

Einem Benutzer können mehrere Zeilen der Tabelle, so kann ein Benutzer haben Vorfahren aus mehreren Ländern.

Meine Frage ist: wie wähle ich den Benutzer aus, deren Vorfahren stammen aus mehreren, festgelegten Ländern?

Z.B. zeige mir alle Benutzer mit Vorfahren aus England, Frankreich und Deutschland, und-Rückgabe 1 Zeile pro Benutzer, dass die Kriterien erfüllt werden, dass.

Was ist SQL?

 user_id     ancestry

---------   ----------

    1        England
    1        Ireland
    2        France
    3        Germany
    3        Poland
    4        England
    4        France
    4        Germany
    5        France
    5        Germany

Bei den Daten oben, würde ich erwarten, dass das Ergebnis "4" user_id 4 hat Vorfahren aus England, Frankreich und Deutschland.

Vielen Dank im Voraus.

P. S. Zu klären: ja, der user_id /Abstammung Spalten einzigartig machen-pair-Mädchen, so ein Land würde nicht wiederholt werden, für einen bestimmten Benutzer.

P. P. S. ich bin auf der Suche für die Benutzer kommen aus allen 3 Ländern - England, Frankreich UND Deutschland (und die Länder willkürlich sind).

P. P. P. S. ich bin nicht auf der Suche nach Antworten, die spezifisch für eine bestimmte RDBMS. Ich bin um eine Antwort auf dieses problem "im Allgemeinen."

Ich bin sehr zufrieden w, regeneriert die where-Klausel für jede Abfrage, sofern die Generierung der where-Klausel können programmgesteuert ausgeführt werden (z.B. dass ich bauen kann, eine Funktion zu erstellen die WHERE /FROM - WHERE-Klausel).

Kommentar zu dem Problem - Öffnen
Meinst du Benutzer, die mit one 'England', 'Frankreich', 'Deutschland', oder meinst du Benutzer, die haben *alle 3"? Kommentarautor: Chains
Was DBMS verwenden Sie? Oracle, SQL-Server, Mimer, DB2 ...? Kommentarautor: Mikael Eriksson
Möchten Sie diese Abfrage zu parametrisieren, mit den Ländern, die Sie suchen, oder sind Sie zufrieden mit dem "aufarbeiten" der where-Klausel für jede Abfrage? Kommentarautor: Mikael Eriksson

InformationsquelleAutor der Frage W. Young | 2011-08-24

Schreibe einen Kommentar