MySQL根据两个匹配的行列

时间:2017-12-30 04:04:33

标签: mysql join

我有以下表格

总线

id | bus_name

停止

id | stop_name

line_route

id | route_name

bus_timing

id | line_route_id | stop_id | bus_id | bus_timing | trip | trip_direction

我正在尝试编写一个查询,我需要检索两个停止之间和两个时间之间的所有总线

我尝试了很多查询组合,但未能检索预期结果

  1. 我需要检索两个城市之间以及两次之间旅行的所有公共汽车。

  2. 如果公共汽车没有直接在两个城市之间旅行,那么我需要显示相互连接的公共汽车。

  3. 查询,

    SELECT * FROM bus_timings 
    INNER JOIN buses on buses.id=bus_timings.bus_id
    INNER JOIN routes ON routes.id=bus_timings.route_id
    INNER JOIN stops ON stops.id=bus_timings.stop_id
    WHERE stops.stop_name in  ('Sydney', 'Melbourne')
    and 
    bus_timings.bus_time BETWEEN CAST('09:30:00' AS time) AND CAST('10:00:00' AS time) 
    

    仍然有两辆以上的公共汽车在两个城市之间行驶,但只返回一辆

    SELECT * FROM bus_timings 
    INNER JOIN buses on buses.id=bus_timings.bus_id
    INNER JOIN routes ON routes.id=bus_timings.route_id
    INNER JOIN stops ON stops.id=bus_timings.stop_id
    WHERE stops.stop_name in  ('Sydney', 'Melbourne')
    HAVING COUNT(DISTINCT stops.stop_name) = 2
    

    仍然有两辆以上的公共汽车在两个城市之间行驶,但只返回一辆

    更新 enter image description here

    图片说明

    1. 在图像城市中指的是路线表

    2. 绿色在城市中显示多个停靠点

    3. 城市1和城市2将在城市3连接,所以如果一个人想要城市1到城市2,那么他需要使用城市1到城市3和城市3之间的互连公共汽车城市-2

    4. 更新了更多详情 https://stackoverflow.com/questions/47164116/mysql-and-query-to-satisfy-on-same-column

      更新

      我的项目目标是存储所有公共汽车,线路,站点和公交车时间以及行程和方向。 1.路线多,每条路线有多个站点,很少有公交站点可能属于多条路线 (例如,城市1和城市2的公交车将按照提供的图像在城市3路线上行驶)

      2.在公交车时刻表中我将存储公交车时间以及路线(线路),停止行程和方向(这里的行程和方向因为一个buse将在源到目的地之间传播 一天多次)

      输出预期

      1.当用户在源到目的地之间搜索时,应用程序应返回源和目的地之间的所有公共汽车旅行 (例如,如果用户选择长时间

      2个时钟到12个时钟)然后它应该返回所有总线这里有可能相同的总线结果两次或更多因为每个公共汽车将旅行 两次以上

0 个答案:

没有答案