MYSQL查询未返回预期记录

詹兹

我有3张桌子,如下所示:

subscription_plans

在此处输入图片说明

subscription_videos

在此处输入图片说明

subscription_groups

在此处输入图片说明

我想找到与所选视频相对应的计划(表subscription_plans)。subscription_groups包含计划-计划映射,即一个计划可以是另一个计划的一部分。例如,计划A,计划B和计划C。计划A同时包含计划B和计划C,并且ID 5为视频的视频是计划B的一部分(表subscriptiond_videos),然后用于查找与视频5对应的计划的查询应返回计划A和计划B。记录也应该是不同的。

我尝试了以下查询。但是,如果我要添加一个在subscription_groups中没有条目的计划,则该记录不会随该查询返回。

$videoid=$_POST['videoid'];
echo "select sv.plan_id,sg.plan_id,sp.id,sp.plan,sp.days_limit,sp.rate from subscribed_videos as sv 
    LEFT JOIN subscription_groups as sg ON sv.plan_id=sg.assosiated_plan_id INNER JOIN 
    subscription_plans as sp ON sv.plan_id=sp.id where sg.assosiated_plan_id=sv.plan_id and sv.videoid=$videoid
    and sg.assosiated_plan_id=sp.id";

谁能帮我找到合适的查询吗?提前致谢。

模糊树

我认为子查询对此查询有意义。第一个子查询选择视频计划的ID,第二个子查询选择相关计划的ID。

SELECT 
    sp.id,
    sp.plan,
    sp.days_limit,
    sp.rate 
FROM 
    subscription_plans sp
WHERE 
    id IN (SELECT DISTINCT plan_id FROM subscribed_videos sv where sv.videoid = $videoid)
    OR id IN (SELECT DISTINCT assosiated_plan_id 
        FROM subscription_groups sg
        JOIN subscribed_videos sv ON sv.plan_id = sg.plan_id
        WHERE sv.videoid = $videoid)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章