我为我的学校制作了一个事件系统来处理事件注册。
因为我们只希望学生访问网站上的注册,所以我有一个名为 potentialusers 的表。每个条目都有一个全名和一个电子邮件。 当用户在网站上注册时,网站会检查学生的电子邮件是否在 potentialusers 表中,如果是,则将用户添加到 users 表中。
我还有一个名为registrations 的表。每当用户注册一个事件时,它就会被添加到这个表中。 条目如下所示:registrationid、eventid(事件表的外键)、userid(也是用户表的外键,而不是潜在用户)。
我想使用 LIKE 语句搜索名称并获得用户的结果列表,一列说明用户是否已注册该事件,一列说明用户是否已注册。
这是我试过的(我在大括号中添加了一些评论):
SELECT FullName, Email from potentialusers
LEFT OUTER JOIN registrations ON (potentialusers.Email = registrations...{1})
WHERE events.eventid = '7'{2} AND potentialusers.Email LIKE = '%jazerix%';
{1} -> 这是第一个问题,因为注册表不包含电子邮件列,仅包含对用户表中用户的引用,其中包含电子邮件。
{2}-> 为了区分事件,7 只是一个例子。
最后我想返回这样的东西:
最佳答案
试一试:
SELECT
p.FullName,
p.Email,
IF(u.userid IS NULL, 'False', 'True') RegisteredInSystem,
IF(r.registrationid IS NULL, 'False', 'True') RegisteredInEvent
FROM potentialusers p
LEFT JOIN users ON p.Email = u.useremail
LEFT JOIN registrations r ON r.userid = u.id AND r.eventid = 7
WHERE p.FullName LIKE '%jazerix%'
关于MySQL连接两个列表检查一条记录是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19169401/