Můj blog se přestěhoval. Přesměrovávám…

Měli byste být automaticky přesměrování. Pokud se tak nestane, pokračujte na http://blog.stastnarodina.com/honza/ a upravte si svoje záložky.

pondělí 24. září 2007

Tajuplné MySQL

English version of this post available here MySQL někdy dokáže překvapit. Teď jsem například narazil na toto: Mám tento SQL dotaz: SELECT id, username, locked, c.*, (SELECT COUNT(*) FROM web_login_users WHERE user=id AND (NOW()-last_action)<600) AS login_count FROM web_users LEFT JOIN web_user_information AS c ON (id=user) Ten bez problému funguje a jako jeden ze sloupců se vrátí sloupec login_count. Chtěl jsem vybrat pouze řádky, kde je login_count větší než jedna. Intuitivně jsem zkusil toto: SELECT id, username, locked, c.*, (SELECT COUNT(*) FROM web_login_users WHERE user=id AND (NOW()-last_action)<600) as login_count FROM web_users LEFT JOIN web_user_information AS c ON (id=user) WHERE login_count > 1 To ale nefunguje. MySQL hlásí, že nezná sloupec login_count. Zajímavé je, že toto funguje: SELECT id, username, locked, c.*, (SELECT COUNT(*) FROM web_login_users WHERE user=id AND (NOW()-last_action)<600) AS login_count FROM web_users LEFT JOIN web_user_information AS c ON (id=user) ORDER BY login_count Bude se to muset zřejmě obejít přes JOIN. Po několika pokusech a konzultaci s kamarádem se vzdávám. Pokus s JOIN SELECT id, username, locked, c.*, COUNT(login_users.user) AS login_count FROM web_users LEFT JOIN web_user_information AS c ON (id=user) LEFT OUTER JOIN web_login_users AS login_users ON (user=id AND (NOW()-last_action)<600) WHERE login_count > 0 končí stejnou hláškou jako předešlé (Unknown column 'login_count' in 'where clause'). Toto se mi sice nelíbí, ale alespoň to funguje: SELECT id, username, locked, c.*, (SELECT COUNT(*) FROM web_login_users WHERE user=id AND (NOW()-last_action)<600) AS login_count FROM web_users LEFT JOIN web_user_information AS c ON (id=user) WHERE (SELECT COUNT(*) FROM web_login_users WHERE user=id AND (NOW()-last_action)<600) > 0

Štítky: ,

Komentáře: 0:

Okomentovat

Přihlášení k odběru Komentáře k příspěvku [Atom]

<< Domovská stránka