Autor Zpráva
joe
Profil
Zdravím,

Pracuji na webu na localhostu, kde mi vše funguje tak jak chci, po přenesení na live, mi ale nevrací to co bych potřeboval. Jedná se o následující dotaz, který počítá počet uživatelů a počet online uživatelů.

$sql = "SELECT COUNT(*) AS count FROM users WHERE status = 'registered' GROUP BY sex
UNION SELECT COUNT(*) AS count FROM users WHERE status = 'registered' AND ((NOW() - last_activity) < 60*5)

První část funguje vždy, problém je s tím druhým dotazem. Pokud není přihlášený žádný uživatel nebo více než jeden, také to funguje. Pokud je ale online jen jeden uživatel, druhý select mi nevrátí nic.

Pokud zavolám samostatně druhý dotaz na db, vrátí mi správný výsledek.


Neví někdo, kde by mohl být problém, chyba..? Jak píšu, na localhostu mi to funguje v pořádku, případně jakým jiným dotazem počet uživatelů zjišťovat...

Díky za odpovědi.
Kajman_
Profil *
Pokud nějaký výsledek nahoře vypíše 1, tak union tu 1 vynechá. Dejte tam union all.

A osobně bych tu podmínku napsal jako
last_activity>unix_timestamp(now())-60*5
protože je rychlostní rozdíl odečítat jednou a porovnávat s daty v tabulce nebo odečítat z každého záznamu v tabulce.
joe
Profil
Děkuju za radu, už to funguje, jak jsem potřeboval, jen mi není jasné proč u mě to fungovalo a na živé verzi ne. Jinak koukám, místní specialista na sql :-)
Toto téma je uzamčeno. Odpověď nelze zaslat.

0