【问题标题】:MySQL: Joining four tables based on userMySQL:根据用户连接四个表
【发布时间】:2014-07-05 05:52:34
【问题描述】:

昨天花了几个小时后,我决定在这里发帖。我有一个只有几个表的数据库,我需要根据用户表的 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 的部分,这就是我卡住的地方。任何帮助将不胜感激。

谢谢。

【问题讨论】:

  • 你能发布你的表格的完整结构吗?
  • 你不能像加入table1users 一样加入table2 吗?
  • @PatrickQ 假设您的意思是 table3 而不是 table1。这就是我昨天一直在尝试为 table2 做的事情。出于某种原因,我的 15K 结果变成了 700K。所以不,通过另一个联接不起作用。

标签: mysql sql join left-join


【解决方案1】:
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]??

【讨论】:

  • 我认为这行不通。你能再检查一下吗?谢谢。
猜你喜欢
  • 1970-01-01
  • 2021-11-10
  • 1970-01-01
  • 2015-06-30
  • 1970-01-01
  • 1970-01-01
  • 2018-09-23
  • 2015-06-30
  • 2011-12-31
相关资源
最近更新 更多