2016-09-07 4 views
0

мне нужно присоединиться к одной таблице с другой, причем для каждого типа группы в левой таблице я получил сумму этих типов значений во второй таблице, где group_type = 4. Я попробовал следующее:SQL покинул присоединиться SUM

SELECT * 
FROM orbiting_group_types ogt 
LEFT JOIN 
(SELECT SUM(val) 
FROM report_orbiting_vals rov 
ORDER by TYPE 
WHERE rov.orbiting_group_type_id = 4) 
ON ogt.id = rov.orbiting_group_type_id 

Однако бросить мне ошибку -

syntax error at or near "WHERE" 
LINE 8: WHERE rov.orbiting_group_type_id = 4) 

Что я пропустил?

+3

«ЗАКАЗАТЬ» должен идти после предложения «WHERE». – redneb

ответ

2

Попробуйте это:

SELECT * 
FROM orbiting_group_types ogt 
LEFT JOIN 
(SELECT SUM(val) 
FROM report_orbiting_vals subrov 
WHERE subrov.orbiting_group_type_id = 4 
//ORDER by TYPE 
) rov 
ON ogt.id = rov.orbiting_group_type_id 

1) Вы должны назвать свои подзапросов, чтобы ссылаться на них. Вы не можете сделать ссылку снаружи подзапроса внутри.

2) TYPE не звучит, как имя столбца

3) ORDER BY идет после WHERE, всегда.

+1

это на самом деле должно быть SELECT * FROM orbiting_group_types ОГТ LEFT JOIN (SELECT SUM (VAL), orbiting_group_type_id ОТ report_orbiting_vals subrov ГДЕ subrov.orbiting_group_type_id = 4 GROUP по orbiting_group_type_id) rov ON ogt.id = rov.orbiting_group_type_id –

0

В общем случае статья order by должна последовать за пунктом where. Кроме того, order by не имеет смысла в подзапросе - я подозреваю, что вы имеете в виду group by в этом случае.

+0

Это только обрабатывает 1 из 3 ошибок в вопросе. – ebyrob

3

Вы не получили псевдоним своего подзапроса, и ваш подзапрос не выбирает поле, в которое вы присоединяетесь, в основном запросе. Как уже упоминалось, order by в подзапросе не будет работать.

Я подозреваю, что вы ищете в результате вдоль линий:

SELECT * 
FROM orbiting_group_types ogt 
LEFT JOIN 
(SELECT SUM(val), orbiting_group_type_id 
FROM report_orbiting_vals rov 
WHERE rov.orbiting_group_type_id = 4 
group by orbiting_group_type_id) as rov 
ON ogt.id = rov.orbiting_group_type_id 

Уведомление as rov, group by, второй столбец в избранных вашей подзапроса и удаление order by.

+0

спасибо, но для меня это не показывает - ОШИБКА: синтаксическая ошибка в точке или рядом с «ГДЕ» LINE 7: WHERE rov.orbiting_group_type_id = 4) as rov ^ –

+0

@EvgeniyKleban Вы правы, 'WHERE' должен предшествовать 'GROUP BY', изменил его соответствующим образом. Не удалось проверить 'SQL', так как у меня нет соответствующих определений таблиц. Надеюсь, эта версия будет работать на вас. – Aquillo

+0

да это работает, спасибо большое :) –

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