在下面的查询中,我们将根据“property_id”在“move_out_date”上添加天数。加入以下SQL查询的替代
我们已经写下面的查询,它工作正常。
但问题是,如果有N个,我们需要使用加入了N次(在下面情况下,只有2个属性)的属性数量。
有没有更好的和优化的方法来完成它?
SELECT
*
FROM
leases l
JOIN lease_processes lp ON (lp.management_company_id = l.management_company_id AND lp.lease_id = l.id AND lp.customer_id IS NULL)
JOIN lease_customers lc ON (lc.management_company_id = l.management_company_id AND lc.lease_id = l.id AND lc.customer_id = l.primary_customer_id)
WHERE
l.management_company_id = 2636
AND lp.fmo_processed_on IS NULL
AND lc.lease_status_type_id = 6
AND (lp.move_out_date + INTERVAL '5 day' <= date(NOW()) AND l.property_id = 28949)
UNION
SELECT
*
FROM
leases l
JOIN lease_processes lp ON (lp.management_company_id = l.management_company_id AND lp.lease_id = l.id AND lp.customer_id IS NULL)
JOIN lease_customers lc ON (lc.management_company_id = l.management_company_id AND lc.lease_id = l.id AND lc.customer_id = l.primary_customer_id)
WHERE
l.management_company_id = 2636
AND lp.fmo_processed_on IS NULL
AND lc.lease_status_type_id = 6
AND (lp.move_out_date + INTERVAL '1 day' <= date(NOW()) AND l.property_id = 28098)
这是PostgreSQL的。我猜上述查询不会工作,因为property_moveout_interval对于所有属性都不相同。 –