MySQL:根据用户加入四个表

时间:2014-05-16 17:14:33

标签: mysql sql join left-join

昨天花了几个小时后,我决定在这里发帖。我有一个包含很少表的数据库,我需要根据用户表的idusers(用户ID)加入4个表。

需要加入的四个表是:users,table1,table2和table3。

users
idusers, name, email, a, b, c, etc.

table1 
custom_id1, a_id, users_idusers

table2 
custom_id2, a_id, users_idusers, comment

table3 
custom_id3, lang

他们的关系如何: - 用户注册并将数据存储到用户表:我需要此表中的所有字段。 - 当他们采取行动时,它会存储在table1中(其中users_idusers是users.idusers)。 - 某些操作(带注释)注册到table2(users_idusers是users.idusers)。 - table1和table2的a_id字段相同并映射到table3的custom_id3。

我需要什么: 我希望能够将table1中的所有操作从用户表中映射到其用户,将table3映射到lang和table2(如果有注释,则获取文本或为该字段返回null。)。

我的查询是什么样的:

SELECT table1.a_id, table1.users_idusers, users.*, table3.langkey
    FROM table1
    LEFT JOIN users ON (users.idusers = table1.users_idusers)
    LEFT JOIN table3 ON (table1.a_id = table3.custom_id3);

上面的查询缺少需要加入table2的部分,而这就是我被困住的地方。任何帮助将不胜感激。

谢谢。

1 个答案:

答案 0 :(得分:0)

SELECT u.*
     , and
     , some
     , other
     , columns
  FROM users u
  JOIN table1 a
    ON a.users_idusers = u.idusers
  JOIN table3 l
    ON l.custom_id3 = a.a_id
  LEFT
  JOIN table2 c
    ON c.a_id = a.a_id
  [AND c.users_idusers = a.users_idusers]??