2011-07-25 58 views
0

我創建了一條SQL語句,該語句應該返回所有銷售員接收的約會數。我使用3個表格,Contract, SalesmenAppointment,我需要顯示每個銷售員收到多少個約會。在複雜的SELECT FULL JOIN語句中缺少記錄

我的問題是,儘管我使用完全加入,但結果並未顯示沒有收到任何約會的人。我發現有一個關於約束的問題。

我看了Except,Intercept和Union選項,但沒有一個可以解決我的問題。我可以使用其他方式獲取有或沒有收到約會的代表的完整列表?

還有就是我用的語句的例子:

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 

感謝您的幫助,

安特諾爾

回答

0

不知道詳細的表結構,我只是猜測這裏 - 但我認爲你的查詢從錯誤的地方開始 - 你應該從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