2013-07-18 2 views
0

У меня проблема с правильной синтаксисом SQL. У меня есть три таблицы, которые мне нужны для ПОЛНОЙ ВНЕШНИХ ОБЪЕДИНЕНИЙ, но сначала я пытаюсь заставить ее работать с двумя из них. Просто не могу понять, что случилось.Синтаксис SQL FULL JOIN

Это все еще работает:

SELECT SUM(A.charge-A.comp), COUNT(A.id) 
FROM A 
FULL JOIN init ON (A.house=init.house) 
WHERE A.tag='V' AND A.house='first' 

Но когда я добавить инициализации поля в выбранном списке, он дает ошибку синтаксиса. Так что этот не работает больше:

SELECT SUM(A.charge-A.comp), COUNT(A.id), init.resp 
FROM A 
FULL JOIN init ON (A.house=init.house) 
WHERE A.tag='V' AND A.house='first' 

Любая идея, почему это так?

КПП. Я использую PostgreSQL 9.1.

+3

Просьбы представить сообщение об ошибке полного синтаксиса. –

ответ

2

Проблема не имеет ничего общего с соединением. Вам нужен group by, потому что у вас есть функции агрегации с неагрегированным столбцом. Возможно, вы имели в виду:

SELECT SUM(A.charge-A.comp), COUNT(A.id), init.resp 
FROM A 
FULL JOIN init ON (A.house=init.house) 
WHERE A.tag='V' AND A.house='first' 
group by init.resp; 

В противном случае, вы, возможно, хотите, чтобы некоторые агрегировании функции:

SELECT SUM(A.charge-A.comp), COUNT(A.id), sum(init.resp) 
FROM A 
FULL JOIN init ON (A.house=init.house) 
WHERE A.tag='V' AND A.house='first' 
+0

Хорошо, проблема решена с помощью «group by». Большое спасибо! – raki