項目中遇到多表關聯查詢,device_info與device_oper是一對多關係,project_info,branch_info與device_info是一對多關係。多表的查詢
SELECT
o.*,
d.deviceName,
p.projectName,
b.`branchName`,
r.`releaseId`
FROM
device_oper o
LEFT JOIN device_info d
ON o.deviceId = d.id
INNER JOIN project_info p
ON d.projectId = p.`id`
INNER JOIN branch_info b
ON d.`branchId` = b.`id`
INNER JOIN release_info r
ON d.`releaseId` = r.releaseId
多表關聯查詢通常會將關聯查詢結果作爲一個表再進行連接查詢
SELECT
c.deviceName,
c.deviceType,
c.projectName,
c.branchName
FROM
device_oper AS a
LEFT JOIN
(SELECT
a.id AS deviceId,
a.deviceName AS deviceName,
a.deviceType AS deviceType,
b.projectName AS projectName,
c.branchName AS branchName
FROM
device_info AS a
LEFT JOIN project_info AS b
ON a.projectId = b.id
LEFT JOIN branch_info AS c
ON a.branchId = c.id) AS c
ON a.deviceId = c.deviceId