使用 5 个不同的表连接查询
Join query using 5 different tables
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
除非我遗漏了一些东西,否则这看起来像是 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
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
除非我遗漏了一些东西,否则这看起来像是 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