我的列车详情表,
Table Name- traindetailtb
Id Train_Number Train_Name From To
1 27658 Venad Express ABC XYZ
2 27659 Venad Express XYZ ABC
还有我的火车日表,
Table Name- traindaystb
Id Train_Number Days
1 27658 Sunday
2 27658 Wednesday
3 27659 Saturday
4 27659 Friday
这是我的火车时刻表,
Table Name- scheduletb
Id Train_Number Station Time
1 27658 ABC 09:00am
2 27658 CDE 10:00am
3 27658 XYZ 11:00am
4 27659 XYZ 12:00pm
5 27659 CDE 01:00pm
6 27659 ABC 02:00pm
将有两个输入,From 和 To
我需要一个查询来给出给定车站之间的所有列车(即,Train_Number、Train_Name、Days)
例如: 对于输入 From- CDE To-XYZ ----> 输出将是-- 27658 Venad Express S W
和对于从- XYZ 到-CDE 的输入----> 输出将是-- 27659 Venad Express M T
任何人都可以帮助我做到这一点。
最佳答案
你在找这样的东西吗?
SELECT q.train_number, MAX(t.train_name) train_name, GROUP_CONCAT(LEFT(d.days, 1)) days
FROM
(
SELECT s.train_number
FROM scheduletb s JOIN scheduletb e
ON s.train_number = e.train_number
WHERE s.station = 'CDE' -- from
AND e.station = 'XYZ' -- to
AND s.id < e.id
) q JOIN traindaystb d
ON q.train_number = d.train_number JOIN traindetailtb t
ON q.train_number = t.train_number
GROUP BY q.train_number
CDE -> XYZ
的输出:
| TRAIN_NUMBER | TRAIN_NAME | DAYS | |--------------|---------------|------| | 27658 | Venad Express | S,W |
XYZ -> CDE
的输出:
| TRAIN_NUMBER | TRAIN_NAME | DAYS | |--------------|---------------|------| | 27659 | Venad Express | S,F |
这是 SQLFiddle 演示
关于MySQL查询查找两站之间的火车,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24795257/