我在现有的一个目录类型网站的mysql数据库中有4个表。 表mt_links包含每个上市 表mt_cl包含上述上市是在哪个类别(我只想CAT_ID = 1) 表mt_cfvalues包含更多的信息对每个上市它可以有重复的值 表mt_images基本信息中包含的图片名称为每个列表。从多个表中检索记录有些不同,有些没有
我想从mt_links的所有记录mt_cl cat_id = 1,并且对于每个记录,我需要mt_cfvalues和cf_images中与link_id匹配的所有记录。
我设置了一个带有Group_Concat的选择并留下了连接,但最终在结果中重复了值。我添加了Distinct,它可以治愈重复值,但mt_cfvalues可以具有相同值的记录,所以现在我缺少了我应该拥有的值。
SELECT a.link_id,
a.link_name,
a.link_desc,
GROUP_CONCAT(DISTINCT b.value ORDER BY b.cf_ID) AS details,
GROUP_CONCAT(DISTINCT c.filename ORDER BY c.ordering) AS images
FROM mt_links a
LEFT JOIN mt_cfvalues b ON a.link_id = b.link_ID
LEFT JOIN mt_images c ON b.link_id = c.link_ID
LEFT JOIN mt_cl d ON a.link_id = d.link_ID WHERE d.cat_ID = '1'
GROUP BY a.link_id
我放在一起这里SQLFiddle:http://www.sqlfiddle.com/#!2/f39e9/1
是否有更简单的方法?我如何解决重复/不重复的问题?
当您遇到重复值时会发生什么? – James
我的结果中应包含来自mt_cfvalues的重复值。在我的小提琴中注意,链接ID 1 ...在细节列中它应该已经返回“好,没有猫,好” – DaveS