Autor | Zpráva | ||
---|---|---|---|
kajaman Profil |
#1 · Zasláno: 13. 3. 2010, 12:42:29 · Upravil/a: kajaman
ahoj, všem, mám takový složitější dotaz na MySQL, napadají mě samá šílená řešení, prosím pomozte :-)
schéma: supervisor(id, jmeno) akce(id, nazev, id_supervisor) users(id, jmeno, id_supervisor) ucasti(id, id_user, id_akce, heslo) supervisor zakládá svoje uživatele a svoje akce. Pokud se uživatel bude účastnit dané akce, přibude záznam v tabulce účast a bude tam heslo, takže přihlášení uživatele bude jen na danou akci. Může se stát, že uživatel je z akce odejmut, tzn. zmizí mu heslo, ale záznam tam zůstane. A znovu přidán... v tabulce přibude další záznam s novým id a s heslem. Potřebuji vybrat uživatele, které má smysl přidávat zobrazit, když chci přidat uživatele do akce, tzn že -buď v tabulce účast nemají záznam -nebo mají záznam, ale pro jinou akci -nebo mají záznam pro danou akci, ale mají smazané heslo, tzn. že je někdo z akce odhlásil a nyní je možno ho znovu přihlásit. zatím jsem se dopracoval k tomuto řešení: SELECT u.* FROM users u LEFT JOIN ucasti uc ON u.id = uc.id_user WHERE (u.id_supervisor = '8') AND ((uc.id_akce != 21 OR uc.id_akce IS NULL) OR (uc.id_akce = 21 AND uc.heslo = '')) které ale není správné, protože zobrazuje uživatele i v případě, že byl odebrán a opět přidán |
||
Kajman_ Profil * |
#2 · Zasláno: 13. 3. 2010, 13:57:37
Možná takto
SELECT u.* FROM users u LEFT JOIN ucasti uc ON u.id = uc.id_user AND uc.id_akce = 21 AND uc.heslo <> '' WHERE u.id_supervisor = '8' AND uc.id_user IS NULL |
||
kajaman Profil |
#3 · Zasláno: 13. 3. 2010, 14:14:00
sakra, ano, myslím, že to funguje.... jo, když to někdo umí, tak to je snadné :-)
moc děkuju! |
||
Časová prodleva: 14 let
|
0