2017-08-20 61 views
0

我有一張巴士詳細信息表。 它有bus_name,bus_source和bus_destination。 我需要知道哪些巴士對可以回程。 例如。如何顯示:行對 - 列中的一行的值在第2行的列b中,列中的第二行的值在第一行的列b中?

bus_name | bus_source | bus_destination 
    a  | Chennai | Bangalore 
    b  | Bangalore | Chennai 
    c  | Mumbai  | Chennai 

我想到這一點:

bus_name | bus_source | bus_destination 
    a  | Chennai | Bangalore 
    b  | Bangalore | Chennai 
+3

下去。嘗試一下。 – Strawberry

+0

你有計劃嗎?你做了一些實驗嗎?如果你有,你能打印結果嗎?在StackOverflow中,當你發佈一個問題時,重要的是要表明你已經做出了一些努力來解決 – alepuzio

+0

在你的數據中,每一個bus_source和bus_destination的組合都只出現一次嗎?如果不是這樣,那麼問題就沒有意義了:從欽奈到班加羅爾可能會有六種不同的公交車(不同的名字),從班加羅爾到欽奈有八種不同的公交車,您打算如何將它們配對成往返行程?你甚至沒有出發和到達時間,這可能會減少有效組合的數量(也可能用於創建獨特配對的邏輯)。 – mathguy

回答

2

使用EXISTS()

SELECT * FROM YourTable t 
WHERE EXISTS(SELECT 1 FROM YourTable s 
      WHERE t.bus_source = s.bus_destination 
       AND t.bus_destination = s.bus_source); 
+0

但是......但是......問題陳述是確定組成往返旅程的巴士對。您的查詢不會這樣做。 – mathguy

+0

爲什麼不這樣做? :S @mathguy – sagi

+0

因爲它沒有標識任何開頭的對。它只能找到可以配對的公交車,但實際上並沒有配對。想象一下,表中的每一輛巴士都是往返對中的一部分;那麼你的輸出只是起始表,而不會告訴你哪個總線與哪個總線配對。 – mathguy

相關問題