Kniffliges JOIN

Kniffliges JOIN

am 12.06.2006 11:43:27 von dev-null-use-reply-adress

Hallo Zusammen,

gegeben seien drei Tabellen:

a: auth_user mit Merkmalen, wie Username, Sperren, usw.
b: user mit allgmeinen Personendaten
c: user_memos mit Memos zu den Benutzern.

a und b stehen in einer 1 zu 1 Beziehung,
zu c ist es natürlich 1 zu n.

Mit folgender Abfrage finde ich alle nicht gesperrten Benutzer,
die bestimmte Memos haben.

SELECT uid, concat(titel,' ',vorname,' ',name) AS name,
webmaster_locked AS Sperre, eintrag, aenderung,
um_memo
FROM fa_user.user AS a
INNER JOIN fa_sessions.auth_user AS b
ON a.uid = b.user_id
AND webmaster_locked =0
LEFT JOIN fa_user.user_memos AS c
ON a.uid = c.um_uid
WHERE um_memo LIKE '%nachweis angefordert%'
OR um_memo LIKE '%heute aufgefordert%'


Logischerweise erhalte ich immer nur einen Datensatz aus c zu
jedem Benutzer, nämlich den, auf den das WHERE passt.

Ziel ist es aber, die Benutzer zu finden, auf die das passt und die
zusätzlich *kein* Memo, wie z.B. 'Nachweis erbracht' haben. Leider
war die Datenpflege in diesem Punkt ein wenig ungenau.

Um ganz sicher zu gehen, hätte ich auch lieber die obige Abfrage,
jedoch zusätzlich mit allen Memos zu jedem Benutzer.
Hier versagen leider meine SQL-Künste. Kann mit jemand helfen?


Gruß
JPM