连接两个表以获取自定义结果

时间:2015-04-11 13:12:49

标签: mysql

我有两个数据库表:用户和成员资格

用户结构 ID,User_Name,地址

会员结构 Id,Start_date,end_date,user_id

现在我想获得没有会员资格的用户名和会员资格已过期的用户

  • 注意:它们之间的关系是一个(用户)到多个(成员资格)

我尝试使用此查询加入这两个表

select users.*, memberships.*, users.id as member_id 
from users 
left outer join memberships 
on memberships.user_id = users.id 
where memberships.user_id is null 
or (memberships.end_date - curdate()) < 0

但我失败了

请帮助:)

1 个答案:

答案 0 :(得分:0)

如果我理解,您希望所有没有当前活动成员资格的用户:

select u.*
from users u
where not exists (select 1
                  from memberships m
                  where m.user_id = u.id and
                        current_date between m.start_date and m.end_date
                 );

您也可以将其标记为left join

select u.*
from users u left outer join
     memberships m
     on m.user_id = m.id and
       current_date between m.start_date and m.end_date
where m.user_id is null;

这里的关键思想是将日期比较放在on子句中。