提供这种数据库结构如何写一个查询来查找只有男性和女性顾客的电影?同一列中的SQL多个值
movie
movID
name
ticket
TID
movID
patronID
patron
PID
gender
提供这种数据库结构如何写一个查询来查找只有男性和女性顾客的电影?同一列中的SQL多个值
movie
movID
name
ticket
TID
movID
patronID
patron
PID
gender
我说做两个查询来获取所有男性顾客和女食客,然后加入基于movID那些:
WITH malePatrons AS
(
SELECT name, m.movID
FROM movie JOIN ticket tic ON movie.movID = tic.movID
JOIN patron pat ON pat.PID = tic.patronID
WHERE pat.gender = "male"
), femalePatrons AS
(
SELECT name, m.movID
FROM movie JOIN ticket tic ON movie.movID = tic.movID
JOIN patron pat ON pat.PID = tic.patronID
WHERE pat.gender = "female"
)
Select * FROM malePatrons JOIN femalePatrons fem ON malePatrons.movID = fem.movID
你并不需要多次查询表。我的评论可能是一个,但太模糊,但我试图暗示你对这样的:
select m.name
from movie m
join ticket t on t.movid = m.movid
join patron p on p.pid = t.patronid
group by m.movid, m.name
having count(distinct p.gender) = 2;
这看起来对所有门票的所有电影,并计算谁拥有这些靠山的不同性别的数量ticketss。 (当然,为了简单,当然只有两种性别;如果你有更多的话可以添加一个过滤器)。 having
条款检查计数是2.如果电影只有男性或女性顾客,而不是两个,则计数为1,并且它将被排除在结果之外。
Select m.movieid, name, count(distinct(gender))as Count
from
MOVIE m
JOIN
Ticket t
on m.movid=t.movid
JOIN
patron P
on
t.patronid=p.Pid
GROUP BY m.movieid, name
HAVING count(distinct(gender)) > 1
http://stackoverflow.com/questions/19499472/sql-query-get-multiple-values-from-same-column-for-one-row – Catmandu
你有什么这么远吗?如果您可以加入表格以有效地获得所有电影的所有赞助人,那么您可以计算每个电影的不同性别数量? –
我已经加入了表格,但我不确定如何去执行你所描述的计数步骤。 – sonobenissimo