1

バス停のあるバスのルートIDを含むテーブルがあります..以下のように..

    route_id                  stop_name
     1234                      stop1
     1234                      stop2
     1235                      stop7
     1235                      stop8

stop1 と stop2 の両方を含む route_id が必要です (stop1 と stop2 の場合は 1234 を取得したい)

私はこのクエリを書きました..

SELECT DISTINCT(route_id) 
FROM bus_stops 
WHERE stops='stop1' AND stops='stop2'

しかし、それは空のセットを返しました。

4

2 に答える 2

3

これを試して:

select distint route_id from bus_stops s1 
where exists(select 1 from bus_stops s2 where s1.route_id = s2.route_id and s2.stop_name = 'stop1')
and exists(select 1 from bus_stops s2 where s1.route_id = s2.route_id and s2.stop_name = 'stop2')

両方の停留所を含むルートが表示されます。

于 2013-06-19T21:40:52.413 に答える
2

これを試すこともできますが、それが最善または最もエレガントなソリューションであるとは約束しません。

SELECT DISTINCT route_id FROM myTable AS myAlias
WHERE EXISTS ( SELECT * FROM myTable WHERE route_id = myAlias.route_id AND stop_name = 'stop1' )
  AND EXISTS ( SELECT * FROM myTable WHERE route_id = myAlias.route_id AND stop_name = 'stop2' )

実際、テスト済みとは約束しませんが、同様のサブクエリを使用すると、そこにたどり着くはずです。

于 2013-06-19T21:40:55.973 に答える