按一个字段分组并显示多个字段(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中实现。非常欢迎。很高兴看到它有所帮助: