Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 左连接3个表_Mysql_Sql_Logic - Fatal编程技术网

Mysql 左连接3个表

Mysql 左连接3个表,mysql,sql,logic,Mysql,Sql,Logic,我无法将3张桌子连接在一起。我有一个用于其中两个表的SELECT,这是我希望看到的主要数据。我还想将税率和税费添加到所选的单位中。它们存储在不同的表中,因为在我的情况下,单位可以有多个速率。以下是有效的查询: SELECT u.unit_name from units u LEFT JOIN reservations r ON r.unit = u.id AND r.arrival <= 2013-10-11 AND r.departure >= 2013-10-0

我无法将3张桌子连接在一起。我有一个用于其中两个表的SELECT,这是我希望看到的主要数据。我还想将税率和税费添加到所选的单位中。它们存储在不同的表中,因为在我的情况下,单位可以有多个速率。以下是有效的查询:

SELECT u.unit_name from units u 
LEFT JOIN reservations r ON r.unit = u.id
    AND r.arrival <= 2013-10-11
    AND r.departure >= 2013-10-01
WHERE r.unit IS NULL
而我想做的那一个没有:

SELECT u.unit_name, ur.unit, ur.rate, ur.tax
FROM units u
LEFT JOIN reservations r 
INNER JOIN unit_rates ur 
    ON r.unit = u.id
    ON ur.unit = u.id
    AND r.arrival <= 2013-10-11
    AND r.departure >= 2013-10-01
WHERE r.unit IS NULL 
    AND ur.active = TRUE
以下是SQLfiddle:

在每次连接后,将条件设置为ON

只需在您的手机内使用:

SELECT u.unit_name, ur.unit, ur.rate, ur.tax
FROM units u
LEFT JOIN reservations r
INNER JOIN unit_rates ur 
/* Another table */
ON r.unit = u.id
    AND ur.unit = u.id
    AND r.arrival <= 2013-10-11
    AND r.departure >= 2013-10-01
WHERE r.unit IS NULL AND ur.active = TRUE

这不会有任何结果。我不应该在第二次连接中使用内部连接吗?右连接可以工作,但名称为空…?取决于您需要什么在原始帖子中显示一些示例数据。尝试使此SqlFIDLE:创建表unit_rates id int,unit int4,rate decimal10,4,tax decimal10,4,active tinyint1;插入单位费率SID,单位,费率,税,有效值1,1000,100.00,10.00,1;创建表单位{id int,name varchar10};插入到单位id中,名称值1000,BOB;创建表预约{id int,unit int4,到达varchar10,离开varchar10};在2013年9月25日和2013年9月30日的保留中插入11000条;但它不会生成。我把它放在那里。我得到一个错误:1064-你的SQL语法有一个错误;检查与MySQL服务器版本对应的手册,以了解第10行“其中r.unit为NULL且ur.active=TRUE LIMIT 0,30”附近使用的正确语法
SELECT u.unit_name, ur.unit, ur.rate, ur.tax
FROM units u
LEFT JOIN reservations r
INNER JOIN unit_rates ur 
/* Another table */
ON r.unit = u.id
    AND ur.unit = u.id
    AND r.arrival <= 2013-10-11
    AND r.departure >= 2013-10-01
WHERE r.unit IS NULL AND ur.active = TRUE