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