Отсутствует запись в сложном операторе SELECT FULL JOIN - PullRequest
0 голосов
/ 25 июля 2011

Я создал оператор SQL, который должен возвращать количество встреч, полученных всеми продавцами. Я работаю с 3 таблицами, Contract, Salesmen и Appointment, и мне нужно показать, сколько встреч было получено каждым продавцом.

Моя проблема в том, что, хотя я использую Full Join, результат не показывает людей, которые не получали никаких встреч. Я обнаружил, что есть проблема с ограничением.

Я посмотрел на варианты, кроме «Перехват» и «Объединение», но ни один из них не смог решить мою проблему. Каким другим способом я мог бы воспользоваться, чтобы получить полный список представителей, имеющих или не получивших некоторые встречи?

Вот пример выражения, которое я использовал:

SELECT C.RepID, COUNT(A.AppID) AS AppAttrib, C.AppointmentPurchased, S.Name, S.FirstName
FROM Repartition.dbo.Contract C 
FULL JOIN Repartition.DBO.Appointment A
ON C.RepID = A.RepID
LEFT JOIN Repartition.DBO.Salesmen S
ON S.RepID = C.RepID
GROUP BY C.RepID, V.Nom, S.Name, S.FirstName

Спасибо за вашу помощь,

Antenor

1 Ответ

0 голосов
/ 25 июля 2011

Не зная подробно структуру вашей таблицы, я просто догадываюсь здесь - но я думаю, что ваш запрос начинается не с того места - вы должны начать с таблицы Salesmen и идти оттуда.Таким образом, в основном выберите те столбцы из таблицы Salesmen, которые вам нужны, а затем объедините другие таблицы по мере необходимости.

Примерно так:

SELECT 
     s.RepID, S.Name, S.FirstName, 
     COUNT(A.AppID) AS AppAttrib, 
     C.AppointmentPurchased 
FROM  
     Repartition.dbo.Salesmen s
LEFT OUTER JOIN 
     Repartition.dbo.Contract c ON s.RepID = c.RepID
LEFT OUTER JOIN
     Repartition.dbo.Appointment a ON s.RepID = a.RepID
GROUP BY 
     s.RepID, s.Name, s.FirstName
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...