Mam dziwny błąd. Mam kod SQL, który wygląda tak:SUMA() wszystkie wyniki (bez klauzuli grupowej)
SELECT
adverse_reaction_type_id,
SUM(CASE adverse_reaction_type_id WHEN 1 THEN `number` ELSE 0 END) line,
SUM(CASE adverse_reaction_type_id WHEN 2 THEN `number` ELSE 0 END) drug
FROM
core_reports_adverse_reactions,
...
WHERE
...
Działa to dobrze na mojej instalacji MAMP, ale nie działa na moim serwerze zdalnym. Zakładam, że jest gdzieś opcja konfiguracji, która powstrzymuje ją przed działaniem.
Jest to błąd Dostaję:
Mieszanie kolumn GROUP (MIN(), MAX(), COUNT(), ...) z żadna grupa kolumn jest nielegalne, jeśli istnieje nie klauzula GROUP bY
wiem co błąd mówi mi, ale problemem jest to, że ja nie chcę do grupy niczym. Chcę uzyskać wszystkie wyniki, gdzie bit gdzie (usunięty powyżej dla zwięzłości) pasuje, a następnie zwraca SUM()
z kolumny number
(jako line
lub drug
na podstawie klauzuli CASE
).
Więc zasadniczo, niezależnie od tego, co jest dopasowane klauzulą WHERE
wszystkim chcę wrócić jest rząd:
line | drug
-----------
10 | 32
Czy istnieje sposób wokół to w ogóle? Albo jakikolwiek sposób mogę GROUP BY nothing
czy coś?
Publikowanie jako komentarz, ponieważ jest to tylko częściowa odpowiedź: ten błąd może wystąpić tylko wtedy, gdy włączony jest tryb SQL "ONLY_FULL_GROUP_BY" (patrz [http://dev.mysql.com/doc/refman/5.6/ pl/group-by-hidden-columns.html] (http://dev.mysql.com/doc/refman/5.6/en/group-by-hidden-columns.html)), więc różnica między twoją instalacją MAMP a twój zdalny serwer może być po prostu tym, że nie masz włączonego trybu SQL w instalacji MAMP. – ruakh