2015-12-08 3 views
1

Добрый день,SQL + JOIN на SUM [Часть 2]

Я хотел бы получить еще один совет. В связи с моим предыдущим вопросом: SELECT + SUM + LEFT JOIN

Мне нужно сделать обратный ход.

Мне нужно ВЫБРАТЬ * Данные из таблицы Partner, в которой SUM партнера_% (из таблицы партнеров) для проекта в таблице проекта не составляет 100%.

Я не уверен, как закодировать этот; Мне нужно присоединиться к таблице партнеров.

SELECT project id, project name, SUM(partner_%) as [Project Partner Total] 
    FROM Project Table LEFT JOIN 
     [partner table] 
     ON project.projectID = partner.projectID 
    GROUP BY project id, project name 
    HAVING SUM(partner_%) <> 100; 

Edit:

Так что мне нужно, чтобы получить информацию партнера из таблицы партнера, где сумма partner_% не равна 100 проектов.

+1

Что не так с кодом, который у вас есть? Вы получаете сообщение об ошибке? –

+0

Я не вижу проблемы с вашим запросом, за исключением того, что ваше условие может быть просто 'HAVING SUM (partner_%) <100;' – Rahul

+0

Приведенный выше код работает нормально; однако «Reverse» я имею в виду, мне нужно получить информацию о партнере из таблицы Partner, где SUM партнера_% не соответствует 100% для проектов. – Justin

ответ

2

Вы должны использовать внутренний запрос для получения проектов в первую очередь. Тогда вы можете присоединиться к партнерам.

Если вы попытаетесь сделать это в одном соединении, у вас возникнут проблемы с группировкой. Вам нужно только группировать проекты, а не партнеров.

SELECT partner.*, PR.* 
FROM partner 
INNER JOIN 
    (SELECT project id, project name, SUM(partner_%) as [Project Partner Total] 
    FROM Project 
    LEFT JOIN partner ON project.projectID = partner.projectID 
    GROUP BY project id, project name 
    HAVING SUM(partner_%) <> 100) PR 
ON PR.projectID = partner.projectID 
+0

Партнер_% находится в таблице Partner; Что дает мне сообщение об ошибке «не может быть связано»? Я обнаружил, что если я добавлю таблицу партнеров в раздел FROM INNER JOIN, сумма вернет значение 3417739.77 для всех строк :( – Justin

+0

Хорошо, не знаю, что (просьба указать структуру ваших таблиц в вопросах) В любом случае, я добавил еще одно соединение к запросу, следуя вашему примеру из вопроса. Путь остается тем же: сначала получите нужные проекты, а затем получите партнеров. – Szymon