>我有 2 个表:Routes(route_code PRIMARY KEY, origin, destination)
和 Stops(stop_code PRIMARY KEY, city)
其中 origin
和 destination
与 stop_code
的代码类型相同。
我必须找到出发地和目的地在同一城市的路线。但是,该问题要求不要使用内置的SQL JOIN。
我不确定如何将原籍城市与目的地城市进行比较。我尝试的是:
SELECT route_code
FROM Routes AS r, Stops AS s
WHERE stop_code != stop_code AND stop_code IN (
SELECT stop_code
FROM Stops AS s1, Stops AS s2
WHERE s1.city = s2.city AND s1.stop_code != s2.stop_code
)
我不确定这是否是正确的答案。我觉得这个查询缺少一些东西。
我上一个问题的唯一示例数据是这样的:
例如,route_code
的形式是XX1234
(2个字母4个数字(,stop_code
是ABC
的形式(3个字母代码(,city
是New York
的形式。
如果没有连接,你可以这样做:
SELECT r.route_code
FROM Routes r
WHERE
(select city from stops where stop_code = r.origin) =
(select city from stops where stop_code = r.destination)
由于stop_code
是主键,因此每个子查询仅返回 1 行。
我认为你只需要两个连接:
SELECT r.route_code
FROM Routes r JOIN
Stops so
ON s.stop_code = r.origin JOIN
Stops sd
ON s.stop_code = r.destination
WHERE so.city = sd.city;