Mehrere Tabellen mehr oder weniger unabhängig"left joinen"
am 09.10.2007 15:06:55 von Jonas WerresHallo,
ich habe folgendes Problem. Ich möchte mit _einer_ Abfrage ein relativ
komplexes Rechtesystem einbeziehen. Ich möchte Informationen über einen
Nutzer auslesen, wenn er direkt oder über eine (n:m) Gruppenzugehörigkeit
ein bestimmtes Recht hat. Die Verknüpfungen existieren entsprechend nicht
zwingend. AuÃerdem wir noch der Domain-table drangejoint, dessen Einträg
auf jeden Fall existiert.Ich bin bisher soweit:
SELECT CONCAT(u.login, '@', d.name),
u.password,
CONCAT(d.name,'/',u.login,'/')
FROM user AS u
JOIN domain AS d
LEFT JOIN (user_has_permission AS uhp,
user_has_group AS uhg,
group_has_permission AS ghp,
permission AS pu,
ermission AS pg) (
ON u.domain_id=d.id AND
u.id=uhp.user_id AND
uhp.permission_id=pu.id AND
u.id=uhg.user_id AND
uhg.group_id=ghp.group_id AND
ghp.permission_id=pg.id
WHERE u.login = 'kay'
AND d.name = 'voits.net'
AND (pu.name='use_mail' OR pg.name='use_mail')
LIMIT 1
Leider schlägt das fehl, meiner Interpretation nach deswegen, weil in der
Klammer normal gejoint wird und deswegen alles wegfällt, wenn nur eine
Verknüpfung nicht existiert.
Wie muss es richtig lauten?
GruÃ