php - 如何在 mysql 中加入这 5 个表?

标签 php mysql database join

我需要连接 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 的内部联接)

Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ON table2.user_id= table3.id

最佳答案

正确的语法是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

关于php - 如何在 mysql 中加入这 5 个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38352169/

相关文章:

php - 取决于选择列表的交互式表单不起作用

php - 如何使用 jQuery/Ajax 和 PHP 检索 HTML 和变量

sql - 数据库表中的可搜索日期字段是否应该始终被索引?

mysql - 如何将数据导入内存数据库?

c# - 如何使用复合表将多个值输入到数据库表中?

php - PDO 登录脚本总是重定向到标题页

mysql - SQL 需要根据具有最小/最大距离约束的纬度/经度获取位置的子集

java - Java 循环迭代器抛出 ConcurrentModificationException

php - 仅显示 Laravel 中选定类别的产品

PHP开发套件?