如何使用具有候选版本密钥的表编写查询



>我有 2 个表:Routes(route_code PRIMARY KEY, origin, destination)Stops(stop_code PRIMARY KEY, city)其中 origindestinationstop_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_codeABC的形式(3个字母代码(,cityNew 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;

最新更新