Autor | Zpráva | ||
---|---|---|---|
Pavelka Jindřich Profil * |
#1 · Zasláno: 6. 12. 2012, 13:40:56
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 |
#2 · Zasláno: 6. 12. 2012, 13:43:20
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 * |
#4 · Zasláno: 6. 12. 2012, 13:53:12
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']); $guest_online_num = intval($grow['numrows']); Počty řádků kde guest=0 nebo guest=1, nic víc nic míň |
||
Tori Profil |
#5 · Zasláno: 6. 12. 2012, 13:53:17
SELECT guest, COUNT(*) as numrows FROM tabulka GROUP BY guest |
||
Someone Profil |
#6 · Zasláno: 6. 12. 2012, 13:55:16
|
||
Pavelka Jindřich Profil * |
#7 · Zasláno: 6. 12. 2012, 13:57:20
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 |
#8 · Zasláno: 6. 12. 2012, 13:59:12
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 * |
#9 · Zasláno: 6. 12. 2012, 14:03:49
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 * |
#11 · Zasláno: 6. 12. 2012, 14:10:26
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 |
||
Časová prodleva: 11 let
|
0