我在現有的一個目錄類型網站的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