Autor | Zpráva | ||
---|---|---|---|
anonymníí Profil * |
#1 · Zasláno: 15. 9. 2014, 19:58:54
Ahoj,
mám tento SQL dotaz, který vrací neočekávané výsledky, resp. z nějkaého důvodu se mi násobí hodnota při COUNT(sloupec). Násobení vzniká asi díky těm LEFT JOINŮM, ale nevím, jak bych o opravil. SELECT u.*, COUNT(a.user_id) AS user_count, -- tady mi to vraci 4 misto 1 (v tabulce je jeden sloupec s tímto ID, zbylé mají NULL) r.*, GROUP_CONCAT(us.s_id) AS s_ids FROM u LEFT JOIN a ON u.id = a.user_id LEFT JOIN r ON r.user_id = u.id LEFT JOIN r1 ON r1.id = u.city LEFT JOIN us ON us.user_id = u.id AND us.s_id IN (4, 5, 6, 7, 8) AND us.value != '' WHERE u.active = 1 AND u.s_id IN (1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31) GROUP BY (CASE WHEN a.user_id IS NULL THEN u.id ELSE a.user_id END) ORDER BY ... LIMIT 0, 10 Za radu děkuji. |
||
Tori Profil |
#2 · Zasláno: 15. 9. 2014, 20:08:42
Proč nepoužíváte jen
GROUP BY u.id , výsledek by měl být stejný, ne?
|
||
anonymníí Profil * |
#3 · Zasláno: 15. 9. 2014, 20:13:04
Tori:
„výsledek by měl být stejný, ne?“ Jseš si tím jistá? Momentálně mám ten projekt jen ve správě, nemám přístup k celému FTP a nemám tedy možnost si to otestovat lokálně. Bude to řešit i ten problém s násobením hodnot? Děkuji. |
||
Tori Profil |
#4 · Zasláno: 15. 9. 2014, 20:16:53
anonymníí:
Celkem jsem, ale zkuste to. Ten hlavní problém by mělo řešit COUNT(DISTINCT a.user_id) .
|
||
Časová prodleva: 10 let
|
0