2012-07-05 90 views
4

我有三個表:MySQL的加入多個表

t1.estimate, t1.mid, t1.description, t1.status 

t2.mid, t2.mname, t2.mphone, t2.memail 

t3.estimate, t3.action 

我需要加入這些表,但我具有的問題是,T2和T3可以包含任何記錄加入到t1。表t1是將應用過濾器的主表。表t2將在加入'中'時99.9%的時間包含匹配。但是表t3是一個只存儲信息並在用戶將其輸入表格時創建估計值的表格。 t1中可以有40,000多條記錄,但t3中只有5,000條記錄。

這是我目前的代碼,但它只顯示所有三個表中的記錄。即使在t2和t3中沒有要加入的記錄,我也希望從t1中顯示值。

SELECT DISTINCT 
    t1.estimate, t1.mid, t2.mname, t1.description, 
    t1.status, GROUP_CONCAT(t3.action) 
FROM t1 
LEFT OUTER JOIN t2 ON t1.mid = t2.mid 
LEFT OUTER JOIN t3 ON t1.estimate = t3.estimate 
WHERE t1.status LIKE '0%' 
GROUP BY t3.estimate 
+0

你有沒有嘗試隔離問題表。也就是說,刪除t3 join,group by和group_concat - 然後看看它是否按照預期的那樣使用t1和t2,然後在t3上工作。 – SmokeyPHP 2012-07-05 19:12:28

回答

3

你需要改變你的GROUP BY使用t1.estimate代替t3.estimatet3.estimate將是NULL,如果沒有記錄聯接。

+0

這工作得很好!謝謝! – 2012-07-05 19:19:21