我的列车明细表,

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

将有两个输入,从和到
我需要一个查询,给出给定站点之间的所有列车(即,列车号、列车名称、天数)
例如:
对于从-CDE到XYZ的输入-->
输出为--27658 Venad Express软件
对于从-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的输出:
|列车|编号|列车|名称|天数|
|--------------|---------------|------|
|27658 |维纳德快车|西|
XYZ -> CDE的输出:
|列车|编号|列车|名称|天数|
|--------------|---------------|------|
|27659 |维纳德快递| S,F|
这里是SQLFiddle演示

关于mysql - MySQL查询以查找两个车站之间的火车,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24795257/

10-09 07:25