[英]GROUP_CONCAT with multiple LEFT JOINs
您好,我對具有多個LEFT JOIN的GROUP_CONCAT有問題。
我有保存數據的主表connectors
,但是由於mysql表無法保存數組,因此我將它們存儲在不同的表modules
, subassemblies
集中,並且數組中的每個元素都有自己的行。 當這些數組的長度相同時,我的查詢工作正常,但是當我從模塊表中獲取3行但從subassemblies
表中僅獲取3行時,我得到錯誤的結果。
示例結果:
id modulepath subassemblypath
1 mp1|mp2|mp3 sp1|sp1|sp1 my result
1 mp1|mp2|mp3 sp1 expected result
連接器表:
id data
1 lorem
2 ipsum
3 data
模塊表:
id cid modulepath
28 1 mp1
29 1 mp2
36 1 mp3
56 3 mp4
85 2 mp5
子裝配表:
id cid subassemblypath
26 1 sp1
31 2 sp2
48 2 sp3
56 3 sp4
我的查詢:
SELECT
c.*,
GROUP_CONCAT(m.modulepath SEPARATOR "|") AS modulepath,
GROUP_CONCAT(s.subassemblypath SEPARATOR "|") AS subassemblypath
FROM connectors c
LEFT JOIN modules m ON m.cid = c.id
LEFT JOIN subassemblies s ON s.cid = c.id
GROUP BY c.id;
嘗試將查詢分為兩個,然后執行聯接
SELECT c.*, t2.modulepath, t1.subassemblypath
FROM connectors c
JOIN (
SELECT
s.cid,
GROUP_CONCAT(s.subassemblypath SEPARATOR "|") AS subassemblypath
FROM subassemblies s
GROUP BY s.cid
) t1 ON c.id = t1.cid
JOIN
(
SELECT
m.cid,
GROUP_CONCAT(m.modulepath SEPARATOR "|") AS modulepath
FROM modules m
GROUP BY m.cid
) t2 ON c.id = t2.cid
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.