MySQL连接两个列表检查一条记录是否存在

标签 mysql sql join

我为我的学校制作了一个事件系统来处理事件注册。

因为我们只希望学生访问网站上的注册,所以我有一个名为 potentialusers 的表。每个条目都有一个全名和一个电子邮件。 当用户在网站上注册时,网站会检查学生的电子邮件是否在 potentialusers 表中,如果是,则将用户添加到 users 表中。

我还有一个名为registrations 的表。每当用户注册一个事件时,它就会被添加到这个表中。 条目如下所示:registrationideventid(事件表的外键)、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 只是一个例子。

最后我想返回这样的东西:

sorry for the use of excel

最佳答案

试一试:

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/

相关文章:

php - 更新 PHP 中的查询问题

php - 在 PHP 中使用 PDO 打开的 SQL 连接是否必须关闭

mysql - 如何获取MySQL中2列的所有不同组合

mysql - 选择一行mysql条件的多行

PHP/MySQL : Getting Multiple Columns With the Same Name in Join Query Without Aliases?

mysql - 使用公共(public)列上的条件从另一个表更新表

只知道十年/世纪的 sql 存储日期

sql - 在 SET 赋值中,您可以使用变量以编程方式定义应为 SET 的列名吗?

sql - 从SQL转换MS Access中的语法错误

php - 如何优化 Yii 中的查询?