【问题标题】:Join query using 5 different tables使用 5 个不同的表连接查询
【发布时间】:2016-07-11 02:10:51
【问题描述】:
tbl_vehicle_mst
--------------------------
v_id    v_no    v_make
1   Bus-01      Tata
2   Bus-02      Volvo
3   Bus-03      Tatra

tbl_route_mst
--------------------------------
r_id    r_no    r_from  r_to
1       01      A       B
2       02      A       C
3       03      A       D

tbl_vehicle_route_map
-----------------------------
vrm_id  r_id    v_id    
1       1       2
2       2       1


tbl_driver_mst
-------------------------------
d_id    d_code      d_name
1       drv-1       John
2       drv-2       Ram
3       drv-3       Gomesh

tbl_veh_driver_map
------------------------------
vem_id   v_id   d_id
1        1      2
2        2      3

如上所示,我有 5 张桌子。使用某种连接查询,我希望输出如下所示。由于涉及 5 个不同的表;我对如何达到所需的输出感到非常困惑。每次我坐下来编写连接查询时,一切都在我的脑海中混杂在一起,我感到困惑并且无法编写连接查询。我将非常感谢任何可能通过一些示例 sql 查询为我指明正确方向的人。提前致谢。

需要的输出

route       v_no        driver_name
------------------------------------
A to B      Bus-02      Gomesh
A to C      Bus-01      Ram 

以下是我目前尝试过的

SELECT 
(SELECT b.d_name FROM tbl_veh_driver_map a, tbl_driver_mst b WHERE a.d_id = b.d_id) AS DRIVER_NAME,
(SELECT DISTINCT(b.r_from || ' - ' || b.r_to) AS RT FROM tbl_veh_driver_map a,tbl_route_mst b,tbl_veh_route_map c WHERE a.v_id = c.v_id AND c.r_id = b.r_id) AS ROUTE,
(SELECT a.v_no FROM tbl_vehicle_mst a,tbl_veh_driver_map b WHERE a.v_id = b.v_id) AS v_no,
FROM tbl_veh_driver_map

【问题讨论】:

  • 请举一个你试过的例子;它可能不正确,但可能离正确不远。
  • 您使用的是什么关系型数据库? SQL Server、Oracle、MySql?请在您的问题中添加相关标签。

标签: sql firebird


【解决方案1】:

除非我错过了什么,否则这看起来像是 pk/fk 对上的简单连接集。下面的查询应该会给你你想要的结果:

select 
  r_from || ' - ' || r_to as route, 
  v_no, 
  d_name as driver_name
from tbl_route_mst as r
join tbl_vehicle_route_map as rm on rm.r_id = r.r_id
join tbl_vehicle_mst as v on v.v_id = rm.v_id
join tbl_veh_driver_map as vd on vd.v_id = v.v_id
join tbl_driver_mst as d on d.d_id = vd.d_id

【讨论】:

    猜你喜欢
    • 2018-04-02
    • 1970-01-01
    • 2017-03-01
    • 1970-01-01
    • 2017-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多