Mysql - 连接查询的总和计数结果

标签 mysql sql

我有一些用户,他们可以在一段时间内进行多次预订。每个预订可以有多人。

查询可能如下所示:

SELECT users.*, 
(SELECT COUNT(person) FROM person_to_booking WHERE person_to_booking.booking = bookings.id) AS people_per_booking
FROM users
LEFT JOIN bookings ON users.id = bookings.user
GROUP BY users.id

这将返回一个结果,其中包含最后预订的人数。如果我删除GROUP BY,那么我会得到 4 行,每行都有该预订的正确人数。

我需要一行,其中 SUM()COUNT(person)。我怎样才能实现这个目标?

编辑

表格的结构如下:

Users

id | name 
---------
1  | Dave
2  | Bob

Bookings

id | user | company
-------------
1  | 1    | Big Group
2  | 1    | Big Group
3  | 2    | Small Company

Person to Bookings

id | person | bookings
----------------------
1  | 1      | 1
1  | 2      | 1
1  | 3      | 1
1  | 4      | 1
1  | 5      | 2
1  | 6      | 2

因此,用户可以针对他们进行预订,然后一个预订可以有很多人。

最佳答案

如果我理解正确的话

SELECT users.*,
SELECT SUM(cper) FROM (SELECT COUNT(person) as cper FROM person_to_booking WHERE person_to_booking.booking = bookings.id) AS people_per_booking
FROM users
LEFT JOIN bookings ON users.id = bookings.user
GROUP BY users.id

关于Mysql - 连接查询的总和计数结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44179822/

相关文章:

javascript - d3从mysql数据库导入数据返回 "undefined"

php - 使用 mysql 进行多个条件搜索的 sql 查询

mysql - WHERE IN崩溃的MySQL

mysql - 将具有相同ID但不同列值的两行合并为一行[mysql]

sql - 将原始 SQL 结果映射到 .NET Core 中的对象列表

mysql - phpmyadmin 卡在登录页面,没有消息(ubuntu)

mysql - 将小型静态表合并到数据库中是一种好习惯吗?

java - statements.executeQuery() 之谜。代码没有被执行,也没有捕获异常。

php - 创建用于登录 PHP 的 Prepared 语句时出错

sql - 结果集行的平均值