Autor | Zpráva | ||
---|---|---|---|
Sylar Profil |
#1 · Zasláno: 13. 2. 2011, 18:58:29
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 |
#2 · Zasláno: 13. 2. 2011, 19:12:07
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'] WHERE id_prava = $_GET['id'] OR id_prava IS NULL |
||
Sylar Profil |
#3 · Zasláno: 13. 2. 2011, 19:30:52
TomášK:
to je první je přesně co sem potřeboval, díky moc. na formátování budu příště myslet |
||
Časová prodleva: 13 let
|
0