我有一張名爲MapObjects的表格,用於存儲放置在地圖上的對象的信息。我有另一個名爲OrgLocations的表,用於存儲組織所在的所有位置。位置以經度和緯度定義。最後,我有另一個名爲ObjectLocations的表,它將地圖對象映射到OrgLocations表中的組織結構。它用於指示地圖上顯示的對象的位置子集。例如,假設一個組織(OrgID = 10)有4個位置(存儲在OrgLocations表中):達拉斯,亞特蘭大,邁阿密,紐約。 該組織有1個與亞特蘭大和邁阿密相關的地圖對象(MapObjects.ID = 5)。T-SQL:條件連接或複雜的WHERE子句?
我的數據集必須從OrgLocations返回與亞特蘭大和邁阿密相對應的記錄(但不包括達拉斯或紐約)。但是,我也可以有一個未分配給任何位置的地圖對象(ObjectLocations中沒有記錄)。這些地圖對象仍屬於某個組織,但不與任何特定位置關聯。在這種情況下,我想返回分配給組織的所有位置。
我不確定這是通過條件連接還是通過WHERE子句中的內容完成的。下面是表將是什麼樣子了一些數據:
OrgLocations
ID OrgID Latitude Longitude Name
0 10 32.780 -96.798 Dallas
1 10 33.7497 -84.394 Atlanta
2 10 25.7863 -80.2270 Miami
3 10 40.712 -74.005 New York
4 11 42.348 -83.071 Detroit
ObjectLocations
OrgLocationID MapObjectID
1 5
2 5
MapObjects的
ID OrgID
5 10
6 11
在這個例子中,當MapObjects.ID爲5 ,ObjectLocations中存在2個位置:亞特蘭大和邁阿密。當MapObjects.ID爲6時,ObjectLocations中沒有記錄,因此將返回OrgLocatons中屬於組織的所有位置(OrgID = 11)。
感謝您的幫助!
+1您可以進行一些連接,但該查詢工作:) –
@aF我想你是指'where ... in'連接。如果不知道所涉及的表中的主鍵/唯一約束,我感覺有點不安全。這樣在輸出中將不會有重複的位置。 –
我實際上需要將結果集作爲子查詢,所以你的If ... else不起作用。 – AndroidDev