MYSQL组在拆分的数组上



我有一个带有列organizer的表event。列组织者是ID Ints的数组(例如:"10920527")。在第二个表(user)中,id与名称相连。

我需要一个MYSQL查询,它可以给我一系列活动组织者的名字。因此f.e.:

SELECT event.*, group_concat(user.forname, ' ', user.surname) as real_names
FROM   event 
LEFT   JOIN user ON event.organizer=user.id 
WHERE  event.id='" . $get_id . "' 
GROUP  BY event.id

所以现在的问题是:eventorganizer是一个数组,我想将数组的每个值与所有user进行比较。id的。

我不确定这在MYSQL中是否可能,但我认为如果可能的话,它将比在PHP中内爆它们要短得多,在PHP中我需要另一个查询来获取所有用户名。

为了正确地解决这个问题,您需要适当地重新设计数据库。

如果每个用户可以是不同事件的组织者,并且每个事件可以由不同的用户组织(多对多关系),则需要创建另一个(透视)表,如user_event:user_id,event_id。因此,要进行查询,您需要通过event_id加入该表,然后通过user_id加入用户表。

SELECT event.*, group_concat(user.forname, ' ', user.surname) as real_names
FROM   event 
LEFT  JOIN user_event ON event.id=user_event.event_id
LEFT  JOIN user ON user_event.user_id=user.id
WHERE  event.id='" . $get_id . "' 
GROUP  BY event.id

您需要使用mysql的FIND_IN_SET函数,看看下面的代码

SELECT event.*, group_concat(user.forname, ' ', user.surname) as real_names
FROM   event 
LEFT   JOIN user ON FIND_IN_SET(event.organizer, user.id) > 0
WHERE  event.id='" . $get_id . "' 
GROUP  BY event.id

希望这对你有帮助。

相关内容

  • 没有找到相关文章

最新更新