bto*_*rge 5 mysql sql database views
我有以下查询,我设计用于根据客户端数据从多个视图中编译数据.
SELECT
vw_clients.client_id,
name,
exts,
vms,
ivrs,
queues,
conf10,
conf20,
conf30
FROM
vw_clients,
vw_exts,
vw_vms,
vw_ivrs,
vw_queues,
vw_conf10,
vw_conf20,
vw_conf30
WHERE
vw_clients.client_id = vw_exts.client_id AND
vw_clients.client_id = vw_vms.client_id AND
vw_clients.client_id = vw_ivrs.client_id AND
vw_clients.client_id = vw_queues.client_id AND
vw_clients.client_id = vw_conf10.client_id AND
vw_clients.client_id = vw_conf20.client_id AND
vw_clients.client_id = vw_conf30.client_id;
Run Code Online (Sandbox Code Playgroud)
只要每个视图中有与vw_clients中的记录相关的记录,查询就可以正常工作.但是我需要修改它以使用左连接,以便它返回来自vm_clients的所有记录,并且只返回具有这些客户端记录的其他视图中的记录.
我已经阅读了关于左连接的内容,但最多我只找到了加入一个或两个表的信息 - 但我需要加入8.我是否在vw_clients.client_id上进行左连接到所有的相应client_id字段看法?那是什么语法?
将不胜感激任何帮助.我非常接近解决这个问题,我认为这是这个难题的最后一块!
非常感谢.
您可以通过将vw_clients放在from列表中的第一个中来使用left join,然后在left join之后跟随所有其他表.左连接只能连接两个表或一个"结果集"和一个表,其中结果集是前一个连接的结果.
在你的情况下:
SELECT
T0.client_id, name, exts, vms, ivrs, queues, conf10, conf20, conf30
FROM
vw_clients T0
left join vw_exts T1 on T0.client_Id=T1.client_id
Left join vw_vms T2 on ...
...
Where ...
Run Code Online (Sandbox Code Playgroud)
也许在这里你不需要where子句.