Autor Zpráva
Sylar
Profil
Zdravím,
mám dotaz
"SELECT r.id AS r_id, m.id AS id, m.nazev AS nazev, r.cteni AS cteni, r.zapis AS zapis, r.mazani AS mazani, r.editace AS editace, r.de_aktivace AS de_aktivace FROM ?_modules_administrace m LEFT JOIN ?_admins_rights_mn r ON m.id = r.id_page  WHERE id_prava = (SELECT prava FROM ?_admins_rights WHERE id = '".$_GET['id']."') ORDER BY nazev"

v tabulce ?_modules_administrace jsou administrační moduly (jednoduše stránky administrace). v tabulce ?_admins_rights_mn jsou vazební položky, kde je dáno, která skupina uživatelů má přístup k jakému modulu administrace.
Dotazem výše, jsem se snažil vybrat úplně všechny moduly administrace a k tomu informaci, jaká práva má nastavena uživatelská skupina s $_GET['id'] (tj. ten vnořený SELECT).
Bohužel když chci, aby byly vybrány i ty moduly, které nemají vazební položku v tabulce ?_admins_rights_mn, tak nemůžu použít podmínku WHERE, kterou ale musím použít, abych vybral pouze ty záznamy, které se týkají dané uživatelské skupiny a nemusel je filtrovat až v PHP.
Je nějaký způsob jak to zapsat už v SQL?
TomášK
Profil
Sylar:
Šlo by ten dostaz zformátovat? 300 znakový řádek do kódu snad také nenapíšete... Z popisu bych řekl, že lze buď podmínku z WHERE přesunout k joinu -
LEFT JOIN ... ON ... AND id_prava = $_GET['id']
nebo k ní přidat
WHERE id_prava = $_GET['id'] OR id_prava IS NULL
.
Sylar
Profil
TomášK:
to je první je přesně co sem potřeboval, díky moc.
na formátování budu příště myslet

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: