您可以联接所有三个表:
SELECT t.TenantID, u.UnitName, tt.*
FROM Units u
INNER JOIN Tenants t ON U.UnitID = t.UnitID
LEFT JOIN TenantTransactions tt ON tt.tenantid = t.id
AND tt.TenantTransactionDate BETWEEN '2018-05-01' AND '2018-05-23'
WHERE u.Occupied = 1
AND u.PropertyID = 8
AND t.Prospect = 2
ORDER BY u.UnitName, tt.TenantTransactionDate
记住前两列(
t.TenantID
,
u.UnitName
)将重复多次:在
TenantTransactions
表。您需要在应用程序中将它们分组。简单的逻辑就可以了。
无论如何,这个查询比现在做的快得多。
此外,如果租户没有交易,则
tt.*
列将全部为空。记住这一点,因为它使用
left join
。这种连接对于确保显示所有租户都是必要的,不管他们是否有交易。