我有一个表event
,其中包含organizer
列。列组织器是一组ID-Ints(f.e。:" 10,920,527")。在第二个表(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
现在问题在于:event
。organizer
是一个数组,我希望将数组的每个值与所有user
进行比较。id
&#39 ; S。
我不确定这在MYSQL中是否可行,但我认为如果它可能会比在PHP中内爆它们要短得多,我需要另一个查询来获取所有用户名。
答案 0 :(得分:2)
要正确解决此问题,您需要适当地重新设计数据库。
如果每个用户都可以成为不同事件的组织者,并且每个事件可以由不同的用户组织(多对多关系),则需要创建另一个(透视)表,如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
答案 1 :(得分:1)
你需要使用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
希望这会对你有所帮助。