无法为三个表编写查询

时间:2015-03-01 02:09:27

标签: mysql database

有三个表格:

eventsuserssubscriptions 我正在尝试查询数据库以提取一些字段(请参阅select语句)。

用户表关系:

  • 通过user_id链接到订阅(并非每个用户都有subscription_id)
  • 通过user_id链接到事件(并非每个用户都有事件)

问题在于并非每个用户在订阅表中都有相应的条目。我想显示所有有活动的用户 - 无论他们是否有订阅。

SELECT subscriptions.plan, subscriptions.created_at, subscriptions.expires_at, users.first_name, events.subdomain, events.heading
FROM users
LEFT OUTER JOIN subscriptions ON users.id = subscriptions.user_id
LEFT OUTER JOIN events ON users.id = events.user_id

UNION
SELECT subscriptions.plan, subscriptions.created_at, subscriptions.expires_at, users.first_name, events.subdomain, events.heading
FROM users
RIGHT OUTER JOIN subscriptions ON users.id = subscriptions.user_id
RIGHT OUTER JOIN events ON users.id = events.user_id

此查询需要一段时间才能运行,但似乎会为某些事件产生双重结果。

目前它返回所有用户,有时每个事件都有重复的条目(在实际的数据库中不是这种情况)。任何帮助表示赞赏!

0 个答案:

没有答案