MYSQL单个查询从一个表中检索单个行,从另一个表中检索多个行作为单个字段

时间:2014-08-02 23:56:47

标签: php mysql

我怀疑为这个问题提出一个标题是多么困难,我想知道是可能的,根本不是。 但我绝不是一个mysql大师,所以这里就是。

我目前正在重写我负责维护的应用程序。 它本质上是一个预订房间的活动管理系统。单个活动通常会有多个与之相关的房间。

在不同部分的整个应用程序中,必须列出一个包含列中房间的事件表以及其他事件信息。

目前,应用程序将房间存储为逗号分隔的id号列表,例如。 1,5,7我想将其标准化,以帮助解决目前因此安排而难以解决的其他问题。

所以我将房间与事件表分开,并使用另一个名为event_rooms的表。该表由

组成
id
event_id
room_id

对于活动所在的每个房间,我都会在此表中添加多行。 这解决了应用程序中的许多问题,理想情况下我希望保持这样。

因此,如果使用单个查询我可以获得事件表行和事件所在的所有房间,那么我想解决的问题是什么?允许我创建包含事件列表的事件表。

事件表很简单,基本上是

-id
-event_name
-event_date
-notes

这可能吗?或者我必须进行多次查询(页面上有100多个事件,我希望避免这种情况,因为这意味着每页有101个查询。

或者我可能没有考虑过整体更好的设计选择? 我正在使用PHP,以防您的想法涉及应用程序代码。

1 个答案:

答案 0 :(得分:1)

我做了一个SQL小提琴我认为解决了你的问题: http://sqlfiddle.com/#!2/71c8d/4

有两个问题:

  • 第一个返回房间ID
  • 的逗号分隔列表
  • 第二个返回逗号分隔的房间号码列表,因为我假设你还有一个房间表

但正如Strawberry所评论的那样,任何基本的mysql教程都会涉及到这一点,我推荐http://www.w3schools.com/sql/作为一个很好的起点。