2013-06-19 120 views
1

我有一個包含路由標識的公交車一臺有公車站.. 像下面返回一個MySQL表列..根據列條件

route_id     stop_name 
    1234      stop1 
    1234      stop2 
    1235      stop7 
    1235      stop8 

我想,同時包含停止1和停止2 ROUTE_ID(用於停止1和停止2我想獲得1234)

我寫此查詢..

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

但它返回一個空集。

+1

嘗試使用'OR'而不是'AND' – Fabio

+0

但如果我正在使用或我認爲它不會滿足兩個(停止)條件... –

+0

切換到OR並不幫助他 - 這不會保證他得到一個停在兩個站點的route_id,只是通過任一站點的所有路線。 –

回答

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') 

事實上,我甚至不答應它的測試 - 但使用類似於子查詢應該讓你在那裏。

+0

是的這一個是正確的沒有複製在route_id –

+0

謝謝你..上帝保佑你.. –

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') 

它會給你有兩個站的路線。

+0

Upvoted發佈完全相同的解決方案,提前4秒:-) –