2013-01-09 2 views
2

두 개 이상의 노래가있는 재생 목록을 찾고 싶습니다. 문장은 작동하지만 재생 목록의 이름과 표시된 노래의 개수()를 원합니다. 나는 내가 조인을 사용해야한다고 생각하지만, 이것이 어떻게 작동하는지 이해하지 못했습니다. 누군가가 도와 줄 수 있습니까?참여 횟수가

playlist table 
++++++++++++++ 
id 
name 

playlist_songs table 
++++++++++++++++++++ 
song_id 
playlist_id 


SELECT p.name FROM playlist p 
WHERE p.id in (SELECT s.playlist_id counter FROM playlist_songs s 
group by playlist_id 
having count(song_id)>2); 
+0

나는이 질문을 읽을 가능하면 조인을 사용 : 참여와 재미 ** * –

답변

4

나는 재생 목록의 이름과 표시되는 노래 의 수를() 할 수 있습니다.

IN 술어를 통해 JOIN을 사용하는 장점이 하나

:

SELECT 
    p.name, 
    COUNT(song_id) counter 
FROM playlist p 
INNER JOIN playlist_songs s ON p.id = s.playlist_id 
GROUP BY playlist_id 
HAVING COUNT(song_id) > 2; 
1

시도 : -

SELECT 
    p.name, 
    count(s.song_id) 
FROM 
    playlist p 
INNER JOIN 
    playlist_songs s 
ON 
    p.id = s.playlist_id 
GROUP BY 
    p.name 
HAVING 
    COUNT(s.song_id) >= 2 

이 SQL 서버 구문이지만, 오라클에 작동합니다.

SELECT p.name as name, count(*) as counter 
FROM playlist p left outer join playlist_songs s on (p.id = s.playlist_id) 
GROUP BY p.name 
HAVING count(*) > 2 
+0

대단히 감사합니다! – user1603200

0

는 당신이 필요로하는 것입니다 *;)
0

시도하십시오 :

SELECT a.name 
FROM 
    playlist a INNER JOIN playlist_songs b 
    ON a.id = b.playlist_id 
GROUP BY a.name 
HAVING COUNT(*) >1 
0

항상

SELECT p.name play_list,count(s.song_id) total_songs 
FROM playlist p 
INNER JOIN playlist_songs s 
ON p.id = s.playlist_id 
GROUP BY p.name 
HAVING COUNT(s.song_id) >= 2;