按一个字段分组并显示多个字段(MySQL)

按一个字段分组并显示多个字段(MySQL),mysql,sql,Mysql,Sql,我有三张桌子: 预订: +----+---------+--------+---------------+-------------+ | id | idRoom | idUser | startDateTime | endDateTime | +----+---------+--------+---------------+-------------+ | 4 | 3 | 1 | 07/06/2020 | 07/07/2020 | | 5 | 3

我有三张桌子:

预订:

+----+---------+--------+---------------+-------------+
| id | idRoom  | idUser | startDateTime | endDateTime |
+----+---------+--------+---------------+-------------+
|  4 |       3 |      1 | 07/06/2020    | 07/07/2020  |
|  5 |      3  |     2  | 07/06/2021    | 07/06/2021  |
+----+---------+--------+---------------+-------------+
房间:

+----+--------------+
| id | description  |
+----+--------------+
|  3 | Room 1       |
+----+--------------+
用户:

+----+----------+
| id | userName |
+----+----------+
|  1 | User 1   |
|  2 | User 2   |
+----+----------+
并希望选择表1中列出的所有预订,同时按房间对象显示用户和房间字段“信息”和“分组”。 我将JOIN子句与GROUP BY子句一起使用,如下所示:

select distinct r, b, u 
from Booking b 
join Room r on b.idRoom=r.id 
join User u on b.idUser=u.id 
where r.id=3
group by r, b, u 
order by r 
但这并没有达到预期的效果。 有人建议使用SQL查询吗

编辑所需结果:

+-------+--------+-----------+
| Rooms  | Users  | Bookings  |
+-------+--------+-----------+
|     3 |      1 |         4 |
|       |      2 |         5 |
+-------+--------+-----------+

如果要按房间按查询输出分组,可以从房间表开始查询。但不确定如何获得Json格式的输出。您可以实现以下输出,并在前端管理其余部分

可能输出-

Rooms  Users  Bookings
3      1      4
3      2      5
查询上述输出-

SELECT R.id AS Rooms,
B.idUser AS Users,
B.ID AS Bookings
FROM Room R
INNER JOIN Booking B ON R.Id = B.idRoom

有关用户的更多详细信息,您现在可以加入用户表。

您想要的结果是什么?你希望从MySQL中得到什么?从语法上来说,这是一个混乱。您不能选择表名,其中r.id=:roomid有一个完全错误的=:我的预期结果是得到两个按房间对象分组的Json对象这里我有一个id为3的房间,由用户1和用户2在不同的时间预订了两次,所以我想在一个房间对象下获得一个用户和预订的列表。。@P.Salmon很抱歉,这是因为我从Java代码复制了查询!我现在编辑了查询!这是你所期待的一个奇怪的结果。查询结果是一个表。因此,您应该能够像显示示例表一样显示预期结果,包括列和行。结果表应该是什么样子?谢谢你的尝试,但我只需要显示房间id一次!下面是两个预订信息,包括用户信息,这个查询显示了两次房间信息,所以我想要实现的不是安静,这不是数据库部分,你不能使用查询实现输出,你需要在你的fronend中实现。非常欢迎。很高兴看到它有所帮助: