我很难把三张桌子连在一起。我有一个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:http://sqlfiddle.com/#!2/b303ad

最佳答案

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

在每次连接后设置条件。
SQL fiddle

关于mysql - 左联接3张 table ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19690522/

10-10 09:45