如何编写有关公交车站应用程序的特定查询?

how to write this particular query regarding a bus-stop app?

我的数据库中有以下 table 名为 stops

Id  coll-id  busnumber stops
1   v01       900       abc
2   v01       900       bcd
3   v01       14        abc
4   v01       14        bcd
5   v01       14        def

公交车基本上都停在上述所有地点,要求用户输入起点和终点。我们需要获取从源头到目的地的所有可用公交车编号。我一直无法这样做,我需要在特定总线的停靠栏中找到这两个值-number.for 例如,如果源是 abc 而目标是 bcd,我需要 return 900 和 14,这只是样本数据,会有更多公交车路线重叠。请帮忙?

Select,只有你想要的那两站的行数。按公交车编号分组,以获取每辆公交车的匹配站点数。只有 return 两个都匹配的停靠点。 DISTINCT 可能不是真正必要的,但如果一个站点可能多次出现在一辆公共汽车的路线上,请确保结果仍然正确。

如果您想获得所有停在 3 或 4 站的公交车,这种方法也适用。只需扩展停靠点列表并相应地增加 having 子句中的数字。

SELECT
  busnumber
FROM
  stops s
WHERE
  s.stops in ('abc', 'bcd')
GROUP BY
  busnumber
HAVING
  COUNT(DISTINCT s.stops) = 2

你可以使用 self join 得到两站公交车号码

   SELECT b1.busnumber 
   FROM stops b1
   JOIN stops b2
   ON b1.busnumber = b2.busnumber
   AND b1.stops ='abc'
   AND b2.stops ='def'