我有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] 删除。
我来说两句