【问题标题】:How to join this 5 tables in mysql?如何在mysql中加入这5个表?
【发布时间】:2016-11-16 01:41:10
【问题描述】:

我需要连接 5 个表以获取必要的数据。

表 1

id | number
1  | 1
2  | 5

表 2

id | number | user_id
1  | 1      | 9
2  | 5      | 8

表 3

id | name | 
8  | john | 
9  | jane | 

表 4

id | email
6  | johndoe@example.com

表 5

id | table4_id | table3_id
1  | 6         | 8

表 1 是我的主表,我想将表 3 和表 4 中的姓名和电子邮件分别添加到表 1 的选择查询中,但为此,我需要使用表 2 和表 5 进行连接它们因为表 1 和表 3 和 4 之间没有直接关系。我只知道如何加入 3 个表而不是 5 个表,我似乎对如何进行此操作感到困惑。

我点击链接here加入表1,2和3。但我不知道如何继续表4和5。

这是我尝试过的查询:

SELECT table1.number, table2.number, table2.user_id, table3.id, table3.name,
table4.id, table4.email, table5.table4_id, table3_id
FROM table1
LEFT JOIN table2
    INNER JOIN table3
        //this query will work if I don't include this 2 inner joins
         INNER JOIN table4
            INNER JOIN table5
            ON table3.id = table5.table3_id
         ON table5.table4_id = table4.id
       //
      ON table2.user_id= table3.id
ON table2.number = table1.number;

错误:(如果包括表 4 和 5 的内连接)

错误代码:1064。您的 SQL 语法有错误;检查 与您的 MySQL 服务器版本相对应的手册 'ON table2.user_id= table3.id

附近使用的语法

【问题讨论】:

  • 添加你尝试过的查询
  • 通常一个一个
  • @Jens 添加了我尝试过的查询
  • @RiggsFolly 添加了查询
  • 语法是 JOIN tablename ON someid=someid 把你的 ON 子句和相关的 JOIN 放在一起,你可能就完成了

标签: php mysql database join


【解决方案1】:

试试下面的代码。希望这会奏效。

Select t3.name,t4.email,t1.number,t2.user_id 
from table3 t3 JOIN table5 t5 ON t3.id=t5.table3_id 
JOIN table4 t4 ON t4.id=t5.table4_id
JOIN table2 t2 ON t2.user_id=t3.id
JOIN table1 t1 ON t1.number=t2.number;

【讨论】:

    【解决方案2】:

    正确的语法是select .. from .. join .. on .. join ..on ....

    SELECT table1.number, table2.number, table2.user_id, table3.id, table3.name,  table4.id, table4.email, table5.table4_id, table3_id
    FROM table1
    LEFT JOIN table2 ON table2.number = table1.number
    INNER JOIN table3 ON table2.user_id= table3.id
    INNER JOIN table5 ON table3.id = table5.table3_id
    INNER JOIN table4 ON table5.table4_id = table4.id
    

    【讨论】:

    • 分号应该在左边join语句吗?
    • @hungrykoala 抱歉复制/粘贴问题。改变了我的答案。
    【解决方案3】:

    试试下面的结构。我是根据您给出的结构制作的

    select t1.number, t2.number, t2.user_id, t3.id, t3.name,t4.id, t4.email, t5.t4_id, t3_id 
    from table5 as t5 
    join table4 as t4 on t5.table4_id = t4.id 
    join table3 as t3 on t5.table3_id=t3.id 
    join table2 as t2 on t2.user_id = t3.id 
    join table1 as t1 on t2.number=t1.number
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-25
      • 2013-12-01
      • 2020-10-24
      • 2012-01-14
      • 2020-03-02
      • 1970-01-01
      相关资源
      最近更新 更多