Felix22: Join-Abfrage (1-to-n) ohne Daten in der rechten Tabelle?

Hallo Leute,

eine kurze SQL-Frage:

in der Tabelle "words" sind Wörter für ein Vokabeltrainer enthalten (Felder: wID, wWord). In  der Tabelle "rounds" halte ich fest, welcher User welches Wort schon gewusst hat (Felder uID,wID).

Nun möchte ich eine Abfrage machen, die mir ein Wort aus "words" zurückgibt, das der User xy noch nicht gewusst hat. Alles klar soweit?

Also eine Abfrage auf "words" mit join auf "rounds", Fremdschlüssel ist wID, und die uID steht fest.

select wWord from words left join rounds on wID where uID!="xy" bringt natürlich so gar nichts, da "rounds" ja auch leer sein kann.

Bin für jede Hilfe dankbar.

Gruß Felix

  1. Hello,

    in der Tabelle "words" sind Wörter für ein Vokabeltrainer enthalten (Felder: wID, wWord). In  der Tabelle "rounds" halte ich fest, welcher User welches Wort schon gewusst hat (Felder uID,wID).

    sinngemäß müsste das etwa so aussehen:
    SELECT words.wID AS wID, rounds.wID AS checkID, wWord
    FROM words LEFT JOIN rounds
    ON words.wID = rounds.wID
    WHERE checkID IS NULL
    -> Schema:
    LEFT JOIN = garantiert alle Datensätze der linken Tabelle, ggf. ergänzt mit Daten der rechten
    WHERE = gib mir nur diejenigen, bei denen du aus der rechten Tabelle nichts zurückbekommen hast.

    MfG
    Rouven

    --
    -------------------
    Computer programming is tremendous fun. Like music, it is a skill that derives from an unknown blend of innate talent and constant practice. Like drawing, it can be shaped to a variety of ends: commercial, artistic, and pure entertainment. Programmers have a well-deserved reputation for working long hours but are rarely credited with being driven by creative fevers. Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination, but because their imagination reveals worlds that others cannot see. -- Larry OBrien and Bruce Eckel in Thinking in C#