Autor Zpráva
pk
Profil *
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
...GROUP BY u.idleague HAVING PocetUzivatelu > 1 ORDER BY PocetUzivatelu DESC
pk
Profil *
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
having není funkce, ale podmínka. Pro GROUP BY nebo asociativní proměnné "as neco"
pk
Profil *
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
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 *
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 *
Máte na mysli
having PocetUzivatelu > l.xxx
?
pk
Profil *
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 *
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 *
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... :)
Toto téma je uzamčeno. Odpověď nelze zaslat.