php - 正确连接 2 个表

标签 php mysql sql mysqli

我在一个表中有一份办公室列表,以及每个办公室拥有的所有短期租约的列表。

我正在尝试查询这两个表以显示所有办公室的列表,以及预订的最早租约和再次可用时的最后租约。

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/

相关文章:

php - 如何编码单引号

javascript - 如何在jquery日历上显示

c# - 在插入 MySql 数据库的 DateTime 对象上获取 "System.FormatException: Input string was not in a correct format."

sql - 使用 case 语句时的 Group By 子句问题

mysql - 按另一个表中列出的多个表中的公共(public)列分组

sql - 为每个 Id 比较 PostgreSQL 中的不同行

php - 有什么方法可以轻松地将 Ruby 代码转换为 PHP?

php - mysql 并选择到 OUTFILE - 将二进制数据写入文件

MySQL 为什么在插入时我的自动递增不是从 1 开始?

mysql - SQL层次结构计数