MySQL连接多个表

MySQL连接多个表,mysql,sql,join,Mysql,Sql,Join,我有三张桌子: 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在加入“mid”时99.9%的时间包含匹配项。但表t3是一个仅存储信息的表,当用户将信息输入表中时,它会创建一个估计值。t1中可以有40000多条记录,

我有三张桌子:

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在加入“mid”时99.9%的时间包含匹配项。但表t3是一个仅存储信息的表,当用户将信息输入表中时,它会创建一个估计值。t1中可以有40000多条记录,但t3中只有5000条

这是我当前的代码,但它只显示所有三个表中的记录。我希望从t1显示值,即使t2和t3上没有要连接的记录

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

您需要将您的
GROUP BY
更改为使用
t1。estimate
而不是
t3。estimate
t3。如果未加入任何记录,estimate
将为空。

您尝试过隔离问题表吗。也就是说,删除t3连接、group by和group_concat,然后查看它在仅使用t1和t2时是否按预期工作,然后再处理t3。