2016-02-28 3 views
3

У меня есть SQL-запрос:SQL 2 Соединение слева в одном запросе со счетом

SELECT table1.column1, table2.column2, table1.column2 
FROM table1 LEFT JOIN table2 (ON table1.column1=table2.column2) 

То, что я хочу сделать, это добавить еще один левый присоединиться к столу, но и рассчитывать в этом слева объединить данные, как:

SELECT table1.column1, table2.column2, table1.column2, COUNT(table3.column1) 
FROM table1 LEFT JOIN table2 ON table1.column1=table2.column2 
LEFT JOIN table3 ON table1.column1=table3.column1 

код, похоже, не работает, что может быть неправильным?

+0

«Не похоже на работу» не является допустимым описание проблемы. Вы получаете сообщение об ошибке? Неверные результаты? Что-то другое? MySQL и SQL Server - это два разных продукта (с очень разными поведением), которые у вас есть на самом деле? Поскольку мы выполняем агрегацию, нам также нужно знать распределение строк (поскольку 'COUNT (...)' может возвращать неверные результаты в противном случае); как выглядят данные? –

ответ

2

count - совокупная функция - вы не можете смешивать ее с однорядными функциями без предложения group by. Один из способов обойти это, чтобы присоединиться на вложенный запрос, а не непосредственно на table3 и применять group by там:

SELECT table1.column1, table2.column2, table1.column2, cnt 
FROM  table1 
LEFT JOIN table2 ON table1.column1 = table2.column2 
LEFT JOIN (SELECT column1, COUNT(*) AS cnt 
      FROM  table3 
      GROUP BY column1) table3 ON table1.column1=table3.column1 
+1

спасибо! другая вещь узнала. –

Смежные вопросы