MySql:将三个表合并在一起

Joh*_*dep 7 mysql sql join

我想将三个表合并在一起,如下所示:

将三个表T1,T2和T3合并在一起

基本上我想要包括所有三个表T1,T2和T3中的项目,并将它们合并,如结果表中所示.我试过这样的事情:

SELECT T1.user, T2.tid, T2.name, T3.type, T1.mid
FROM T1
LEFT JOIN T2 ON T1.mid = T2.mid
LEFT JOIN T3 ON T2.tid = T3.tid
GROUP BY T1.user;
Run Code Online (Sandbox Code Playgroud)

但它似乎没有奏效.它确实显示结果,但只显示唯一值.在结果if userjohny,它只显示第一个值而忽略第二个值,尽管它应该在结果表中.

有什么我想念的吗?

Ale*_*kov 5

如果您想查看每个用户的所有结果,则不需要该组。否则,它会隐藏一些行,并且每个用户只显示一个行。

首先将 T1 从右连接到 T2,然后从左连接到 T3。如果 T1 中的元素与 T3 中的元素没有任何联系,则这是一种很好的做法,以防止显示 T£ 字段的 NULL 结果。

SELECT T1.user, T2.tid, T2.name, T3.type, T1.mid
FROM T1
RIGHT JOIN T2 ON T1.mid = T2.mid
LEFT JOIN T3 ON T2.tid = T3.tid;
Run Code Online (Sandbox Code Playgroud)


Kib*_*bee 5

摆脱"分组依据"部分.这应该可以解决您的问题.