Autor | Zpráva | ||
---|---|---|---|
pk Profil * |
#1 · Zasláno: 31. 7. 2008, 13:49:35
zdárek lidi,
před par dny jsem začal ulehcovat PHPku tim, že se pokousim proniknout do tajů SQL, ale mam tu malej problem který nevím jak vyřešit. Nevěřim, že to bude pro vás záludný oříšek a nevěděli by jste si s tím rady... Mam tento SQL dotaz: SELECT COUNT(u.idleague) AS PocetUzivatelu, u.idleague AS IdLigy FROM admin_league AS l LEFT JOIN users_play AS u ON l.id = u.idleague GROUP BY u.idleague ORDER BY PocetUzivatelu DESC Vysledek dotazu je: PocetUzivatelu | IdLigy ------------------------------------ 6 | 7 ------------------------------------ 3 | 6 ------------------------------------ 1 | 12 Tak a ja ted nevím jak udelat to, aby mi finalni SQL dotaz vybral jen data, kdepočet uživatelů je vyšší jak 1!!! Tzn. že třetí řadka, kde PocetUzivatelu s hodnotou 1 bude ve výsledku chybět. Děkuji vám za dary a případne triky do budoucna! |
||
nightfish Profil |
#2 · Zasláno: 31. 7. 2008, 13:54:37
...GROUP BY u.idleague HAVING PocetUzivatelu > 1 ORDER BY PocetUzivatelu DESC |
||
pk Profil * |
#3 · Zasláno: 31. 7. 2008, 14:03:18
waw... to byla rychlost...
moc diky chlape, ono to funguje, vubec jsem nevedel že v SQL existuje nejaka fce HAVING ještě jednou diky moc PS: jdu dál testovat SQL, taže sem asi za chvili neco opět napíšu... :) |
||
somebody Profil |
#4 · Zasláno: 31. 7. 2008, 14:15:40
having není funkce, ale podmínka. Pro GROUP BY nebo asociativní proměnné "as neco"
|
||
pk Profil * |
#5 · Zasláno: 31. 7. 2008, 18:36:02
jj, tak jsem to myslel, že to je podmínka, jen jsem v tu chvili napsal jak mi prislo pod ruku.. :)
Ale poprosil bych tě, jeslti mi mužeš malinko vice vysvětlit toto: asociativní proměnné "as neco" thx |
||
nightfish Profil |
#6 · Zasláno: 31. 7. 2008, 18:49:30
Ale poprosil bych tě, jeslti mi mužeš malinko vice vysvětlit toto: asociativní proměnné "as neco"
místo "asociativní proměnná" bych spíš řekl alias... pojmenování výstupu funkce v selectu... např. select count(*) as pocet from ... nebo select date_format(datum, '%Y') as rok from ... |
||
pk Profil * |
#7 · Zasláno: 31. 7. 2008, 19:13:46
Jo taaak, tak to je jasné... njn na mně musite česky :)
Vím, že teď už asi vymýšlím kraviny a moc to komplikuji, ale sla by ta hodnota v podmince HAVING menit podle treti tabulky? To bych musel asi JOINem pripojit treti tabulku ale nevim jak, to jsem nikdy nedal... Opravenz dotaz s HAVING: SELECT COUNT(u.idleague) AS PocetUzivatelu, u.idleague AS IdLigy FROM admin_league AS l LEFT JOIN users_play AS u ON l.id = u.idleague GROUP BY u.idleague HAVING PocetUzivatelu > 1 ORDER BY PocetUzivatelu DESC Vysledek dotazu je: PocetUzivatelu | IdLigy -------- 6 | 7 -------- 3 | 6 Jde o to, že mám v tabulce `admin_league` sloupec kde je uloženo `id` řádku tabulky `xxx` a v tom řádku je uložena hodnota, kterou bych chtěl načítat a posilat do podminky HEVING. Př.: liga ID#6 ma v tabulce `xxx` např. 4 takže podminka by mela byt pro tuhle ligu nasledující HAVING PocetUzivatelu > 4 pozn. V PHP je to otazka pár řádek, to je v pohodě, já jen jeslti to jde udělat přímo v SQL.... určitě ANO... :) |
||
Kajman_ Profil * |
#8 · Zasláno: 31. 7. 2008, 19:23:43
Máte na mysli
having PocetUzivatelu > l.xxx ? |
||
pk Profil * |
#9 · Zasláno: 31. 7. 2008, 19:37:46
Nene, v tabulce `admin_league`(male L 'l' => l.xxx ) je pouze údaj na jakém řádku v tamulce `xxx` (`xxx` AS x => having PocetUzivatelu > x.hodnota ) se nachází požadovaná hodnota, takze je zapotřebí připojit třetí tabulku
|
||
Kajman_ Profil * |
#10 · Zasláno: 31. 7. 2008, 21:04:28
SELECT COUNT(u.idleague) AS PocetUzivatelu, u.idleague AS IdLigy
FROM xxx x join admin_league AS l on l.xxx=x.id LEFT JOIN users_play AS u ON l.id = u.idleague GROUP BY u.idleague HAVING PocetUzivatelu > x.hodnota ORDER BY PocetUzivatelu DESC |
||
pk Profil * |
#11 · Zasláno: 31. 7. 2008, 21:47:43
No chlape ty jsi bourak, moc diky, ono to fakt funguje.. :) muhehe...
Fakt díky moc, ať se ti daří!!! PS: jen počkej, ja si vymyslím na tebe něco složitějšího... :) |
||
Časová prodleva: 16 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0