0
我的表連接和定位有以下欄目:如何多次連接同一個表?
連接:
LocationIDFrom
LocationIDTo
Duration
地點:
LocationID
LocationName
的示例記錄如下: 連接:
1, 2, 3ms
2, 1, 5ms
1, 5, 12ms
3, 2, 2ms
地點:
1, New York
2, Boston
3 Los Angeles
我想顯示的列LocationFrom,LocationTo,持續時間的表。上面記錄的例子是
New York, Boston, 3ms
Boston, New York, 5ms
Los Angeles, Boston, 2ms
我嘗試使用下面的查詢
SELECT l1.LocationName AS LocationFrom, l2.LocationName AS LocationTo, c.Duration
FROM Connection c
INNER JOIN Location l1 ON l1.LocationID= c.LocationIDFrom
INNER JOIN Location l2 ON l2.LocationID= c.LocationIDTo
但結果卻是不完整的;有些行缺少位置詳細信息存儲在位置表中的LocationIDFrom和LocationIDTo。
有誰知道如何修改上面的查詢或寫入正確的返回表的位置名稱必須從同一個表中檢索LocationFrom和LocationTo而不是ID?
Here我找到了類似問題的解決方案,但不知道爲什麼該原理不適用於上述問題。
我不明白如何可能有行丟失。你能詳細說明一下嗎?我假設你具有參照完整性,即連接中的每個位置ID真的存在於位置... – 2011-05-12 14:00:00
您的查詢對我來說是正確的。有沒有哪個位置ID可能是NULL的情況?如果是這樣,你會想使用'LEFT JOIN'而不是'INNER JOIN'。 – 2011-05-12 14:01:19
我的錯!如果所有ID的位置詳細信息存儲在位置表中,則查詢返回正確的結果。我忽略了一個不正確的條目。 – 2011-05-12 14:34:21