如何编写有关公交车站应用程序的特定查询?
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'
我的数据库中有以下 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'