Svi*_*ish 2 mysql sql many-to-many join
不太确定如何询问或定义这个,但无法弄清楚.
我有三个这样的表:
persons person_id, first_name, last_name
hobbies hobby_id, name
persons_hobbies person_id, hobby_id
Run Code Online (Sandbox Code Playgroud)
我需要制作两个清单.既有爱好A又有B的人,以及有爱好但不爱B的人.我怎么能写出这两个问题呢?无法弄清楚如何加入和所有这一切......
说爱好A有id = 3而爱好B有id = 7.
这样的事情应该有效:
-- Persons that have both hobby A and B
select p.first_name,p.last_name
from persons p
inner join persons_hobbies ph1 on ph1.person_id = p.person_id and ph1.hobby_id = 3
inner join persons_hobbies ph2 on ph2.person_id = p.person_id and ph2.hobby_id = 7;
-- Persons that have hobby A but not B
select p.first_name,p.last_name
from persons p
inner join persons_hobbies ph1 on ph1.person_id = p.person_id and ph1.hobby_id = 3
left outer join persons_hobbies ph2 on ph2.person_id = p.person_id and ph2.hobby_id = 7
where ph2.person_id is null;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
827 次 |
最近记录: |