提供這種數據庫結構如何寫一個查詢來查找只有男性和女性顧客的電影?同一列中的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