【发布时间】:2013-11-30 19:28:15
【问题描述】:
我在 MySQL 中有一个主表 (m) 和两个辅助表 (a,b)。
我有这个问题:
SELECT *,group_concat(a.name_auxone) as namesone
FROM main m
LEFT JOIN auxiliaryone a ON m.id_main=a.id_main_auxone
WHERE m.id_main=1
...用php $row[]创建后,显示:
$row['namesone']-->name1,name2,name3
这没关系(我在 auxiliarione 中有 3 个寄存器与 id_main=1 相关联)。但是如果我想用这个查询加入另一个辅助表(有 2 个与 id_main=1 关联的寄存器)......
SELECT *,group_concat(a.name_auxone) as namesone,
group_concat(b.name_auxtwo) as namestwo
FROM main m
LEFT JOIN auxiliaryone a ON m.id_main=a.id_main_auxone
LEFT JOIN auxiliarytwo b ON m.id_main=b.id_main_auxtwo
...我有这个值:
$row['namesone']-->nameone1,nameone1, nameone2,nameone2, nameone3,nameone3
$row['namestwo']-->nametwo1,nametwo2, nametwo1,nametwo2, nametwo1,nametwo2
所以.. 在namesone(关联3个寄存器)中,每个寄存器重复2次。 在 namestwo(关联 2 个寄存器)中,这 2 个寄存器重复 3 次。 我在寄存器组之间放置了空格,以便清楚地看到它们是如何重复的(11、22、33 和 12、12、12)。
正确的显示应该是:
$row['namesone']-->nameone1,nameone2,nameone3
$row['namestwo']-->nametwo1,nametwo2
(123 和 12)我做错了什么?谢谢。
【问题讨论】:
-
如果您使用示例数据创建一个 sqlfiddle.com url,将会很有帮助。
标签: php mysql join left-join group-concat