我有三個表,rents[id, contract_id, paid]
,contracts[id, active, unit_id]
和units[id]
。
我需要的是一個查詢,它將選擇支付的所有租金,並且他們的合同處於活動狀態,並將單位加入記錄。3個表之間的圓形連接(或嵌套連接)
我曾嘗試是:
SELECT * FROM `rents` AS Rent
LEFT JOIN units AS Unit
INNER JOIN contracts AS Contract
ON (Unit.id = Contract.unit_id AND Contract.active=true)
ON Rent.unit_id = Unit.id
WHERE Rent.paid = true
返回的行接近,我只收到了支付租金,與單位 - 但是,它忽略了contract.active條件。
你能幫忙嗎?
'差不多'? ;-)。 – Strawberry
@Strawberry幾乎是什麼?謹慎闡述?啊沒關係。我想你是在談論這種「幾乎總是好的做法」。那麼我是溫柔的,因爲我個人不會允許這種用法在我的代碼庫中進行簡單的選擇。 –
謝謝! @MikeBrant。 對內部變化的左右是正確的,沒有想過它。只是一個問題:根據我的理解,您的解決方案有效,使用「加入」條件比「where」條件具有更好的性能? – yossi