我有两张桌子:
1)带旅行的桌子
id | title
------------------------
1 | travel1
2 | travel2
3 | travel3
2)带有城市的表
id | city | travel_ID
------------------------
1 | London | 1
2 | York | 1
3 | Newcastle | 1
4 | London | 2
5 | Newcastle | 2
6 | Newcastle | 3
7 | York | 3
城市的ID也意味着订单。
所以问题是:如果宣布城市(从A到B),我怎样才能获得旅行。 (例如从约克到纽卡斯尔应该从伦敦到纽卡斯尔旅行1 - 旅行1和旅行2)
答案 0 :(得分:1)
如果我理解正确,你需要旅行ID,其中第一个城市的id小于第二个城市的id。
如果是这样,那么这可能就是你要找的东西:
select c1.travelid
from cities c1 join
cities c2
on c1.city = $CITY1 and
c2.city = $CITY2 and
c1.travelid = c2.travelid and
c1.id < c2.id;
如果您想要这个名字,可以加入:
select t.*
from travels t join
cities c1
on c1.travelid = t.travelid join
cities c2
on c1.city = $CITY1 and
c2.city = $CITY2 and
c1.travelid = c2.travelid and
c1.id < c2.id;