Autor Zpráva
Pavelka Jindřich
Profil *
Jsme zelenáč a upravuju si pár řádků jednoho starého CMS k mé libosti... a potřeboval bych následující dva selecty sjednotit do jednoho, jak to mám udělat?

$gresult = $db->sql_query("SELECT COUNT(*) AS numrows FROM ".MY_TABLENAME_SESSION." WHERE guest='1'");
$grow = $db->sql_fetchrow($gresult);
$db->sql_freeresult($gresult);
$guest_online_num = intval($grow['numrows']);


$mresult = $db->sql_query("SELECT COUNT(*) AS numrows FROM ".MY_TABLENAME_SESSION." WHERE guest='0'");
$mrow = $db->sql_fetchrow($mresult);
$db->sql_freeresult($mresult);
$member_online_num = intval($mrow['numrows']);
Joker
Profil
Pavelka Jindřich:
Jakým způsobem by se měly „sjednotit do jednoho“, co by měl ten výsledný dotaz vracet?
Taps
Profil
Pavelka Jindřich:
zkus UNION
Pavelka Jindřich
Profil *
Proč UNION když jde o jednu a tutéž tabulku? Vracet by to mělo to co vidíte v kódu:

$member_online_num = intval($mrow['numrows']);
a
$guest_online_num = intval($grow['numrows']);

Počty řádků kde guest=0 nebo guest=1, nic víc nic míň
Tori
Profil
SELECT guest, COUNT(*) as numrows 
FROM tabulka 
GROUP BY guest
Someone
Profil
[#4]
WHERE (guest = 1 OR guest = 0)
Pavelka Jindřich
Profil *
Tori:
Díky, akorát možná nechápu výběr.... budu to asi muset projít pomocí WHILE rozumím tomu dobře?
Joker
Profil
Pavelka Jindřich:
Jestli chcete „Počty řádků kde guest=0 nebo guest=1, nic víc nic míň“, tak [#6] Someone je správně.
Vrátí počet řádků, kde guest je 0 nebo 1.
Pavelka Jindřich
Profil *
Potřebuju dvě výsledné proměnné (počet kde je guest 0 a počet kde je guest 1) ne celkový součet! Jde mi o to zbavit se těch dvou zbytečných SELECTů, kter éjsme uvedl nahoře.
Tori
Profil
Pavelka Jindřich:
Vrací to jeden nebo dva řádky se součty pro každou hodnotu ve sloupci guest (předpokládám, že tam může být jen 1 nebo 0).
Pavelka Jindřich
Profil *
Tori:
ano... to bude ono, jiné hodnoty tam nejsou a skutečně potřebuju dvě výsledné proměnné s hodnotami (součtu výskytů guest=1 a součtu výskytů guest=0)

vyzkouším to ;-) dík
Tori
Profil
Do jednoho řádku by to šlo třeba takhle:
SELECT
(SELECT COUNT(*) pocet FROM tabulka WHERE guest = 1) hoste,
(SELECT COUNT(*) pocet FROM tabulka WHERE guest = 0) clenove
Index na sloupci guest by tomu dost pomohl.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0