LEFT JOIN有3个表格

时间:2013-10-30 18:02:59

标签: 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-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

HERE是SQLfiddle:http://sqlfiddle.com/#!2/b303ad

2 个答案:

答案 0 :(得分:2)

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

每次加入后置ON条件。

SQL fiddle

答案 1 :(得分:0)

只需在ON中使用AND

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