我怀疑为这个问题想出一个标题是多么困难,我想知道的是可能的,但根本不可能。 但我绝不是 mysql 大师,所以这里是。
我目前正在重写一个我负责维护的应用程序。 它本质上是一个预订房间的事件管理系统。一个事件通常会有多个与之关联的房间。
在整个应用程序的不同部分中,必须列出一个事件表(其中包括一列中的房间以及其他事件信息)是很常见的。
目前,应用程序将房间存储为逗号分隔的 ID 号列表,例如。 1,5,7 我想对此进行规范化,以帮助解决目前由于这种安排而遇到困难的其他查询。
因此,我使用另一个名为 event_rooms 的表将房间与事件表分开。该表由
id
event_id
room_id
对于事件所在的每个房间,我都会在该表中放入多行。 这解决了应用程序中的许多问题,理想情况下我希望保持这样。
因此,谈到我正在尝试解决的问题,是否可以通过单个查询来获取事件表行以及事件所在的所有房间?让我可以简单地创建包含事件列表的事件表。
事件表很简单,基本上
-id
-event_name
-event_date
-notes
这可能吗?或者我是否必须执行多个查询(页面上有 100 多个事件,我希望避免这种情况,因为这意味着每页有 101 个以上的查询。
或者是否有我可能没有考虑过的整体更好的设计选择? 我正在使用 PHP,以防您的想法涉及应用程序代码。
最佳答案
我制作了一个 SQL Fiddle,我认为它可以解决您的问题: http://sqlfiddle.com/#!2/71c8d/4
有两个查询:
- 第一个返回以逗号分隔的房间 ID 列表
- 第二个返回以逗号分隔的房间号列表,因为我假设您也有一个房间表
但正如 Strawberry 所评论的,这是我推荐的任何基本 mysql 教程中都会涵盖的内容 http://www.w3schools.com/sql/作为一个好的起点。
关于php - MYSQL 单个查询既可以从一个表中检索单行,也可以从另一个表中检索多行作为单个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25100409/