2017-08-20 60 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

相关问题