我想从数据库中导出订户列表,而我的SQL调用工作时,它缺少一些逻辑。我的问题是 - 我想导出用户过期的会员。某些用户可能同时拥有过期的会员资格和活动会员资格。我不希望这些用户在我的名单上。MySQL查询过滤只从表中过期的用户
我在想我需要一个子查询来过滤用户过期和活跃的成员资格,但我不知道如何。
这里是我当前的查询:
SELECT
jos_users.name,
jos_users.email,
jos_users.username,
jos_payplans_subscription.expiration_date,
jos_payplans_subscription.status,
jos_payplans_subscription.total,
jos_payplans_subscription.subscription_id
FROM jos_payplans_subscription
LEFT JOIN jos_users ON jos_payplans_subscription.user_id = jos_users.id
LEFT JOIN jos_payplans_user ON jos_payplans_user.user_id = jos_users.id
WHERE (jos_payplans_subscription.expiration_date BETWEEN '2015-09-01 00:00:00' AND '2015-10-31 00:00:00')
我感谢所有帮助。
感谢:-)
jos_payplans_subscription.status没有确定它们是否处于活动状态,过期状态等的标志吗? – Hexana
是的,但仅适用于当前的会员。用户可以拥有多个成员资格,我只需要查找那些过期会员资格并且没有活动会员资格的用户。 – Dyvel
您是否更容易更改架构?例如,用户可以拥有1个或更多成员资格,并且成员资格可以具有1个或更多状态(活动或不活动)。因此,在用户和成员身份之间创建一个名为“membershipStatus”的多对多关系,其中具有用户ID,会员ID和成员资格状态的组合PK?这会给你一个简单的查询 – Hexana