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


MYSQL Single query to retrieve both single row from one table and many rows as a single field from another

我怀疑为这个问题想出一个标题是多么困难,我想知道的是可能的,根本不是。但我绝不是一个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/作为一个很好的起点。