Autor | Zpráva | ||
---|---|---|---|
jara*6 Profil * |
#1 · Zasláno: 19. 3. 2009, 14:08:13
Mam funkcni select, který mi vybere IDuzivatele dle toho zda patri nebo nepatri do urcite skupiny, ktere definuji v $poleskupin. Vazebni tabulkou mezi IDuzivatele a IDskupiny je tabulka s nazvem v_uzivatelskupina. Vše pracuje dobre az do chvile, kdy bych potřeboval uzivatele seradit podle prijmeni. Vazebni tabulkou by tedy mela byt t_uzivatele (ve kter je sloupec prijmeni a take IDuzivatele).
$poleskupin = Array ("Spmu", "Szam"); $SQLdotaz1 = Mysql_Query("SELECT DISTINCT IDuzivatele FROM v_uzivatelskupina WHERE IDskupiny LIKE '%".implode("%' OR IDskupiny LIKE '%", $poleskupin)."%'"); Zkousel jsem mozne i nemozne i tohle: $SQLdotaz1 = Mysql_Query("SELECT * FROM v_uzivatelskupina, t_uzivatele WHERE v_uzivatelskupina.IDskupiny LIKE '%".implode("%' OR v_uzivatelskupina.IDskupiny LIKE '%", $poleskupin)."%' GROUP BY t_uzivatele.IDuzivatele ORDER BY t_uzivatele.prijmeni"); ale tento select mi sice vse setridi, ale projistotu me vybere vsechny IDuzivatele bez ohledu zda do prislusnych skupin patri nebo ne, co nechci. Muzete-li prosim o vasi radu Dekuji |
||
Kajman_ Profil * |
#2 · Zasláno: 19. 3. 2009, 14:17:20
V dolním dotaze chybí provázání těch dvou tabulek... něco jako WHERE v_uzivatelskupina.IDskupiny = t_uzivatele.IDskupiny AND (more like).
Další problémy budou díky tomu, že like %1% vyhoví i např. skupiny 10 a 21? Pokud může být jeden uživatel ve více skupinách, udělejte třetí tabulku, kde budou tyto vazby. |
||
jara*6 Profil * |
#3 · Zasláno: 19. 3. 2009, 14:21:56
Jo promin v euforii ve zkouseni ruznych moznosti jsem to zapomel vrazit, ale i presto vysledek stejny. IDskupiny jsou stanoveny znakove tedy napr: Spm, Szmu takze s problemem ve spojeni s LIKE by nemuselo dojit (ale dobra pripominka)
$SQLdotaz1 = Mysql_Query("SELECT * FROM v_uzivatelskupina, t_uzivatele WHERE v_uzivatelskupina.IDskupiny LIKE '%".implode("%' OR v_uzivatelskupina.IDskupiny LIKE '%", $poleskupin)."%' and t_uzivatele.IDuzivatele = v_uzivatelskupina.IDuzivatele GROUP BY t_uzivatele.IDuzivatele ORDER BY t_uzivatele.prijmeni"); takze i po doplneni t_uzivatele.IDuzivatele = v_uzivatelskupina.IDuzivatele === stale stejny :-( |
||
Kajman_ Profil * |
#4 · Zasláno: 19. 3. 2009, 14:38:48
Tak ukažte kód s doplněním propojení tabulek. Musíte tam mít všechny or zazávorkované!
|
||
jara*6 Profil * |
#5 · Zasláno: 19. 3. 2009, 14:48:15
Díík právě jsi me nakopl: vzdy ony ty skupiny jsou pevne dane - ty ktere chci vybrat!
takze takhle: SELECT * FROM v_uzivatelskupina, t_uzivatele WHERE (v_uzivatelskupina.IDskupiny = 'Spmu' OR v_uzivatelskupina.IDskupiny = 'Szam') and t_uzivatele.IDuzivatele = v_uzivatelskupina.IDuzivatele GROUP BY t_uzivatele.IDuzivatele ORDER BY t_uzivatele.prijmeni a hotovo, dík |
||
Časová prodleva: 15 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0