gpt4 book ai didi

php - 将许多记录聚合到第二个 mysql 表的每个结果中

转载 作者:行者123 更新时间:2023-11-29 06:51:10 25 4
gpt4 key购买 nike

我有一个“事件”表和“照片”表。每个事件在“照片”表中可能有零个或多个对应的记录。以下 sql 为每个事件提供了单独的结果。

我如何将照片聚合到一个事件的单个字段中,以便每个结果都是一个唯一的事件,并且可以从 php 中的 $event['photos'] 之类的东西访问照片?

SELECT e.title, e.eid, p.pid
FROM events e
RIGHT JOIN photos p ON p.aeid = e.eid
WHERE e.dateTimeStart >= $start_date_time AND e.dateTimeStart <= $end_date_time

最佳答案

由于您使用的是 MySql,因此您可以选择使用 GROUP_CONCAT聚合函数:

SELECT e.title, e.eid, GROUP_CONCAT(p.pid) AS pids
FROM events e
LEFT JOIN photos p ON p.aeid = e.eid
WHERE e.dateTimeStart >= $start_date_time AND e.dateTimeStart <= $end_date_time
GROUP BY e.title, e.eid

但是,请记住,在单个列中存储多个值会违反第一范式...因此在使用 GROUP_CONCAT 函数之前权衡一下您的其他顾虑...永远不要store 您在此表单中的数据。

另外,请注意 RIGHT JOIN 更改为 LEFT JOIN... 这不仅是出于美观原因的首选,我认为这是您想要的功能因为 events 是必需的行,而 photos 可以是零到多

关于php - 将许多记录聚合到第二个 mysql 表的每个结果中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15346824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com