我有以下三個表,我試圖聯合在一起,並創建一個所有桌面和任何人有一個分配給他們的用戶名(如果有的話)的概述。我應該用什麼樣的JOIN加入這些表格?
dbo.Users
ID Name Lastname JobTitle
118 Ryan Doe Field Engineer
119 Jessica Braun Technical Consultant
120 Daniel Sous Web developer
121 Amy Amyson Intern
.. etc
dbo.LightDesktops
ID Model MACAddress UserID
1 HP1234 AA:AA:AA:AA:AA:AA 118
2 HP1234 BB:BB:BB:BB:BB:BB 121
3 HP1234 AA:BB:BB:AA:BB:AA NULL
4 HP1234 BB:AA:BB:AA:AA:BB 124
dbo.MediumDesktops
ID Model MACAddress UserID
1 HP12PRO AA:AB:AA:BB:AA:BA 132
2 HP12PRO BB:BA:AB:BA:BB:AA 119
3 HP12PRO AA:BA:BA:AB:AA:BA 123
4 HP12PRO BB:BB:BB:AB:BA:BB 241
我設法弄清楚如何做到這一點每個類型的桌面,例如LightDesktops:
SELECT * FROM LightDesktops LEFT OUTER JOIN Users ON LightDesktops.UserID = Users.UserID
,會告訴我他們的資料對臺式機的一個很好的概述,以及誰如果有的話有一個。
如果我想有一點用都沒有,因此在股票我可以做
SELECT * FROM LightDesktops LEFT OUTER JOIN Users ON LightDesktops.UserID = Users.UserID WHERE LightDesktops.UserID IS NULL
我怎樣才能達到同樣的效果光桌面的概述,但包含的信息的兩個表我們的桌面?我試圖使用一個UNION,但返回了很多重複值。
稍微偏離主題;你有沒有考慮將輕型和中型桌面合併成一張桌子?您可以添加一個額外的列來識別哪些是輕/中等。這種方法的好處是它會簡化你需要編寫的查詢。 –
你可以添加一個你希望在輸出中看到哪些列的例子嗎? –
採取@目的地數據的建議可能是合理的,但也可能無法進行此更改。或者,您可以使用'CREATE VIEW'在一個地方獲取連接邏輯,然後在所有後續查詢中使用該視圖,稍後您可以重構以刪除該視圖。 –