2012-12-22 37 views
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 

我想這從兩個「花園」與「默利爾」即2D通過總線。我試過了,我成功地映射了一條路線,就好像公共汽車從花園中通過一樣,但是有一個條件是有兩個組合框,一個是從哪裏開始,另一個是從哪裏結束..我想要公共汽車從哪裏通過的整條路線花園和默利爾作爲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) 

它提供空結果集

想要解決這個問題。

回答

1
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) 
+0

非常感謝工程:)我不能投票由於低信譽:( –

+0

@dDRE:感謝格式化....新的堆棧溢出...不知道關於格式化 – srid99

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 Fiddle with Demo

返回結果:

| ID | BUS_NAME | BUS_ID | ROUTE_ID | 
------------------------------------- 
| 1 |  2D |  1 |  1 |