我已经尝试过一些以前的答案,但是它们没有多大意义。

我有两个表,“组”之一代表现实世界中的人群,而“事件”之一代表该组的会议。

我有一个非常简单的查询,用于选择组,以将其显示在网站上的列表中,以及在组配置文件页面上的单独查询,其中列出了即将举行的会议,我不确定要使用哪种技术来添加会议“下一次会议”到组列表,理想情况下,它需要作为MySQL查询中的另一列返回。

之前我对联接很好,但是在第一个表的每行中将联接结果的数量限制为一个,这似乎并不简单。

关于哪种技术可以证明这一点的任何简单建议?

谢谢!

粗略的架构如下:

CREATE TABLE `groups` (
  `id` varchar(12) NOT NULL,
  `title` varchar(30) NOT NULL,
  PRIMARY KEY (`slug`)
)

CREATE TABLE `events` (
  `id` int(6) NOT NULL AUTO_INCREMENT,
  `group` varchar(20) NOT NULL,
  `title` varchar(50) NOT NULL,
  `start` datetime NOT NULL,
  `finish` datetime NOT NULL,
PRIMARY KEY (`id`)
)

最佳答案

您提供的架构不一致,并且您未提供查询...

为了给出某种答案,我假设groups.id = events.group

要显示下一个事件,您可以执行以下操作:

SELECT G.*, M.EVENT FROM GROUPS G LEFT JOIN
(
SELECT X.GROUP, MIN ( X.ID ) EVENT
FROM EVENTS X
INNER JOIN (SELECT E.GROUP G, MIN ( E.START ) S FROM EVENTS E WHERE E.START > NOW() GROUP BY E.GROUP) Y
ON X.GROUP = Y.G AND X.START = Y.S
GROUP BY X.GROUP
) M ON G.ID = M.GROUP

10-07 19:04
查看更多