视频
v_id,
v_name
属性:
p_id,
p_name
property_video:
pv_id,
pv_v_id, <- video id
pv_p_id, <- property id
我想搜索muti-cat,例如:
鉴于一些p_id
(属性ID),我想搜索匹配那些id视频
需要property_video中的所有p_id和相同的pv_v_id
然后mysql写道:
SELECT
a.*,
b.*
FROM
video as a,
property_video as b
WHERE
a.v_id = b.pv_v_id
and b.pv_p_id in(12,15)
GROUP BY a.v_id;
我知道这部分in(12,15)
必须改为“和”,但我不知道如何让它发挥作用。
答案 0 :(得分:1)
在这里,我们将在指示视频ID的列上加入property_video和video。 where条件允许我们仅将结果限制为具有IN子句中包含的属性的视频。
SELECT v.v_id
FROM property_video pv
JOIN video v
ON pv.pv_v_id = v.v_id
WHERE pv.pv_p_id IN (12,15)
GROUP BY v.v_id
HAVING count(distinct pv.pv_p_id) = 2
通过视频ID进行分组,然后仅保留具有2个不同属性的视频(即必须同时拥有两个,而不仅仅是一个),即可实现多类别要求。这假设您构建查询语法的方法使您能够调整HAVING子句中的数字以匹配预期过滤器中不同属性的数量。
答案 1 :(得分:0)
我认为你需要使用innerJoin,试试这个。
SELECT
a.*,
b.*
FROM
video as a,
InnerJoin property_video as b
WHERE a.v_id = b.pv_p_id
and b.pv_p_id in(12,15)
GROUP BY a.v_id;
答案 2 :(得分:0)
select a.*, b.*, c.* from video as a, property_video as b, property as c
where a.v_id = b.pv_v_id and c.p_id = b.pv_p_id and c.p_id in (12,15);
假设您正在寻找带有属性ID 12 或 15的视频。