Ошибка агрегации MySQL - PullRequest
0 голосов
/ 28 мая 2010

Я пытаюсь сосчитать все идентификаторы таблицы table3, которые связаны с первыми двумя таблицами, но я думаю, что мой код SQL неверен, может кто-нибудь помочь мне исправить это?

Вот код:

$dbc = mysqli_query($mysqli,"SELECT table1.*, table2.*, COUNT(id) as num, table3.id
                             FROM table1
                             INNER JOIN table2 ON table1.id = table2.id
                             INNER JOIN table3 ON table2.id = table3.id
                             WHERE table2.id = '$id'");

Вот сообщение об ошибке.

1140: Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 4

Ответы [ 2 ]

0 голосов
/ 28 мая 2010

Вы пытаетесь использовать статистическую функцию, COUNT(), без GROUP предварительного вывода результатов. Кроме того, вам нужно сделать столбец «id» внутри COUNT() менее двусмысленным, как запрос Adrian . Пожалуйста, попробуйте следующий запрос:

SELECT table1.*, table2.*, COUNT(table3.id) as num, table3.id
  FROM table3, table2, table1    
WHERE table1.id = table2.id     
  AND table2.id = table3.id    
  AND table2.id = $id  
GROUP BY
  table1.*,
  table2.*,
  table3.id

Для получения дополнительной информации о статистических функциях и неоднозначных именах столбцов в запросах, обратитесь к Справочному руководству MySQL для Группировка по функциям и Определители идентификаторов .

0 голосов
/ 28 мая 2010

Можешь попробовать?

SELECT COUNT(table3.id) as num
  FROM table3, table2, table1
WHERE table1.id = table2.id 
  AND table2.id = table3.id
  AND table2.id = $id
...