【发布时间】:2023-04-02 12:51:02
【问题描述】:
在我的项目中,我需要未过期的用户订阅计划。当用户订阅一个计划时,它将被输入到一个表usersubscription中,其结构如下所示:
id user_id plan_id subscribed_on
存储计划详情的表是subscription_plans:
id plan days_limit discounted_rate added_on status rate
1 PlanJ 30 240 1403094260 1 245.00
我需要检查用户是否订阅了未过期的计划(包含所选视频)(即,它将在 subscribed_on+days_limit 天过期)。我现在使用的当前查询是
select id from usersubscription where (plan_id
IN
(
(
SELECT DISTINCT plan_id
FROM
subscribed_videos sv where sv.videoid = 2
)
)
OR id IN
(
SELECT DISTINCT assosiated_plan_id AS plan_id
FROM subscription_groups sg
JOIN subscribed_videos sv ON sv.plan_id = sg.plan_id
WHERE sv.videoid = 2
)
) and user_id=1
这将检查 id 为 1 的用户是否订阅了任何包含 id 为 2 的视频的计划。我将日期保存为整数(unix 时间戳)。
谁能帮我找到解决办法?
提前致谢
【问题讨论】:
-
你能在 MySql 上构建架构吗fiddle
-
@Shell..请检查sqlfiddle.com/#!2/4f734/1
-
我不知道它是否有帮助。但是,我试过了。 sqlfiddle.com/#!2/df9619/1/2
-
@Shell..我需要检查所选视频是否有活动计划(即,未过期的计划)。如果满足条件,查询应该返回空行或记录。
标签: php mysql date unix-timestamp