我想加入4个不同的表.这些表由以下列构成:

TableA - aID | nameA | dID

TableB - bID | nameB | cID | aID

TableC - cID | nameC | date

TableD - dID | nameD

从表A开始,我了解如何使用b连接表A和表c,因为b具有这些表的主键.我也希望能够加入TableA上的table.下面是我的SQL语句,它首先连接表A和表B,然后将表A和表B连接到表C:

SELECT TableA.*, TableB.*, TableC.* FROM (TableB INNER JOIN TableA
ON TableB.aID= TableA.aID)
INNER JOIN TableC ON(TableB.cID= Tablec.cID)
WHERE (DATE(TableC.date)=date(now())) 

当我try 添加另一个联接以包括D时,我得到一个未知的错误"TableD":

 SELECT TableA.*, TableB.*, TableC.*, TableD.* FROM (TableB INNER JOIN TableA
    ON TableB.aID= TableA.aID)
    INNER JOIN TableC ON(TableB.cID= Tablec.cID)
    INNER JOIN TableA ta ON(ta.dID= TableD.dID)
    WHERE (DATE(TableC.date)=date(now())) 

推荐答案

你想要更像这样的东西:

SELECT TableA.*, TableB.*, TableC.*, TableD.*
FROM TableA
    JOIN TableB
        ON TableB.aID = TableA.aID
    JOIN TableC
        ON TableC.cID = TableB.cID
    JOIN TableD
        ON TableD.dID = TableA.dID
WHERE DATE(TableC.date)=date(now()) 

在你的例子中,你实际上没有包括TableD.你所要做的就是像以前一样执行另一个连接.

注意:您会注意到,我删除了您的许多括号,因为在大多数情况下,它们确实不是必需的,并且在try 阅读代码时只会增加混乱.正确的嵌套是使代码可读和分离的最好方法.

Mysql相关问答推荐

我可以在插件中访问SQL密钥对吗?

带负数的MySQL子字符串_索引

如何在产品查询中插入GROUP_CONCAT?

MySQL多连接以获得单个结果集(使用MySQL max函数)

如何防止程序中计数器出错

奇怪的MySQL SELECT循环;但不是\G

MySQL滑动窗口动态间隔?

MySQL match against给出奇怪的结果

将 JSON 类型的列与特定字符串值进行比较

如何计算具有权重属性的记录数

正则表达式模式相当于 mysql 中的 %word%

如何显示患者预约中的专业人员姓名?

如何在 Laravel 5.1 中获取数据库中的表列表

MySQL - 使一对值唯一

MySQL中的行值增加和减少1

MySQL - 基于同一表中的行求和列值

在 WHERE 子句中使用 mysql concat()?

如何使用 XML_LOAD() 将 XML 文件导入 MySQL 数据库表;功能

你能推荐一个免费的 Linux 轻量级 MySQL GUI 吗?

为什么 GRANT 在 MySQL 中不起作用?