繁体   English   中英

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

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

我怀疑想出这个问题的标题有多困难,我想知道的是不可能的,根本不可能。 但是我绝不是mysql专家,所以这里是。

我目前正在重写我要维护的应用程序。 本质上,这是一个预订房间的事件管理系统。 单个事件通常会有多个与之关联的房间。

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

目前,应用程序将房间存储为以逗号分隔的ID号列表,例如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/作为一个好的起点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM