MySQL JOIN 使用 IF 条件对非唯一值进行连接

标签 mysql if-statement join

我有一个与会者表,如下所示:

event_id    user_id
  1           16
  1           12
  1           13
  2           14
  2           16
  2           12
  3           11
  3           16

以及有关表中事件的信息,如下所示:

event_id    eventcenter_id      date_begin                date_end
    1             2         2016-10-31 18:00:00        2016-10-31 21:00:00
    2             1         2016-11-20 18:00:00        2016-11-20 18:40:00
    3             2         2016-11-20 15:00:00        2016-11-20 18:00:00

最后是一个如下所示的表格:

eventcenter_id              name
      1              Fire Hall
      2              Sunny Lake 

我需要一个查询来返回用户正在参加的所有事件。结果应返回事件中心名称、date_begin 和 date_end,我可以在日历中使用这些对象。当我尝试加入参加者表中的 event_id 时,它给出的错误不是 event_id 上的唯一值。我追求的结果应该是这样的:

user_id eventCenter_name    date_begin                    date_end
   16        sunny lake    2016-10-31 18:00:00         2016-10-31 21:00:00
   16        fire hall     2016-11-20 18:00:00         2016-11-20 18:40:00
   16        sunny lake    2016-11-20 15:00:00         2016-11-20 18:00:00

最佳答案

尝试一下(也许您必须将表 eventcenter 的名称更改为您使用的名称):

SELECT aa.user_id, cc.eventCenter_name, bb.date_begin, bb.date_end
FROM attendees AS aa
INNER JOIN events AS bb
ON aa.event_id = bb.event_id
INNER JOIN eventcenter AS cc
ON bb.eventcenter_id = cc.eventcenter_id
ORDER BY aa.user_id ASC;

如果您需要特定用户,请使用以下查询:

SELECT aa.user_id, cc.eventCenter_name, bb.date_begin, bb.date_end
FROM attendees AS aa
INNER JOIN events AS bb
ON aa.event_id = bb.event_id
INNER JOIN eventcenter AS cc
ON bb.eventcenter_id = cc.eventcenter_id
WHERE aa.user_id = 16;

关于MySQL JOIN 使用 IF 条件对非唯一值进行连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32938223/

相关文章:

mysql - 比较两个 SQL 条目的枚举索引

java - 如何重构 else-if 以选择正确的构造函数

c# - 我怎样才能加入一个字符串数组,但首先删除数组中的空元素?

ios - 展平任意数组

php - 如何在 php 和 mysql 中发布数据以使用 for 循环插入多次(行)

mysql - MySQL如何合并连接表的行数,包括0?

mysql - 如何正确产生对应的SQL

mysql - 我的 MySQL 数据库中有 '0001/16' 值。我如何在 where 子句中写入 '1/16' 以进行选择?

python - 在python中转义mysql的单引号和双引号

ruby - 如何在 Ruby 类中使​​用 if 语句?