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