0

私は3つのテーブルを持っています:

Buses:
    id   |   bus_name
    1    |   2D
    2    |   1D

Routes:
id   |   route_name
1    |   Garden
2    |   Malir

Bus_Route
id......|....bus_id...|....route_id
1.......|......1......|....1   
2.......|......1......|....2   
3.......|......2......|....1

「Garden」と「Malir」の両方から通過するバス、つまり2Dが欲しいです。私は試してみましたが、バスが庭からのみ通過する場合のように1つのルートをマッピングすることに成功しましたが、1つはバスの始点から、2つ目は終点からのコンボボックスが2つあるという条件があります。上記のサンプルで言及した1Dとしての庭とマリルは庭からでは​​なくマリルからのみ通過するため、開始が庭からで終了がマリル上にある場合、結果として2Dのみが表示されます..私のクエリは以下のとおりです。

select b.bus_name 
from buses b, route r, bus_route br 
where (b.id = br.bus_id AND r.id = br.route_id) 
  AND (r.id=1 AND r.id=2)

空の結果セットを与える

それを修正したい。

4

2 に答える 2

2
SELECT bus_name
FROM buses
WHERE id in
(SELECT b.bid
FROM bus_route b
JOIN bus_route _b  
ON b.bid = _b.bid  
WHERE b.rid = 1 AND _b.rid = 2)
于 2012-12-22T20:07:47.707 に答える
0

次のクエリを使用できるはずです。

select *
from buses b
left join bus_route br
  on b.id = br.bus_id
where br.route_id = 1
  and exists (select *
              from buses b1
              left join bus_route br2
                on b1.id = br2.bus_id
              where br2.route_id=2
               and b.id = b1.id)

SQL FiddlewithDemoを参照してください

結果を返します:

| ID | BUS_NAME | BUS_ID | ROUTE_ID |
-------------------------------------
|  1 |       2D |      1 |        1 |
于 2012-12-22T20:14:46.780 に答える