我在一个表中有一份办公室列表,以及每个办公室拥有的所有短期租约的列表。
我正在尝试查询这两个表以显示所有办公室的列表,以及预订的最早租约和再次可用时的最后租约。
SELECT offices.* ,MIN(lease.date_start), MAX(lease.date_end) FROM offices, lease WHERE lease.office_id = office.id ORDER BY office.id DESC
办公 table :
id | office_name | office_description
1 | North York | Lorem Ipsum
2 | Toronto | Lorem Ipsum
3 | Richmond | Lorem Ipsum
租赁表:
id | office_id | start_date | end_date
1 | 1 | 5 | 8
2 | 1 | 3 | 7
3 | 2 | 1 | 4
我想要得到的结果:
office_id=>1, start_date=>3, end_date=>8
office_id=>2, start_date=>1, end_date=>4
office_id=>3, start_date=>NULL, end_date=>NULL
我将如何构造我的查询以获得该结果?
最佳答案
为了在这种情况下正确使用 MIN()
和 MAX()
,您需要 GROUP BY
:
SELECT
office.*
MIN(lease.start_date),
MAX(lease.end_date)
FROM office AS office
LEFT JOIN lease AS lease ON (lease.office_id = office.office_id)
GROUP BY office.office_id
ORDER BY office.office_id DESC
关于php - 正确连接 2 个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19551461/