2013-03-11 2 views
0

저는 데이터베이스를 처음 사용합니다. mysqlite3을 사용하여 음악을 정리하고 있습니다. 테이블에 ArtistName, SongTitleAlbumTitle 필드가 있습니다. 데이터베이스의 주된 목적은 그것을 쿼리하고 3 곡 미만인 모든 아티스트를 반환하는 것입니다.비슷한 항목을 계산하는 데이터베이스 구성

이를 달성하려면 동일한 아티스트의 노래를 추가 할 때마다 증가하는 "노래 카운트"항목이 필요하다고 생각합니다. 그러나 동적 항목을 만드는 방법을 모르겠습니다. 내가 찾고있는 동적 속성을 가지고 있지만 조건부 증가가 아닌 AUTO_INCREMENT 키워드를 알고 있습니다.

생각하십니까?

답변

1

당신이 songCount 열 필요가 없습니다 내가 귀하의 요청에 뭔가를 놓친 거지하지 않는 한, 당신은 쉽게 미만 3 곡을 가지고 있지만 다음 쿼리를 사용하여 예술가 얻을 수 있습니다 :

select artistname 
from music 
group by artistname 
having count(SongTitle) <3 

이는 artistname을 반환을 총 노래 수가 3 개 미만인 모든 아티스트에 대해

select m1.* 
from music m1 
where exists (select artistname 
       from music m2 
       where m1.artistname = m2.artistname 
       group by artistname 
       having count(SongTitle) <3) 
1

하는 것은 필요하지 않은 : 당신이에 확장하려는 경우

그런 다음 작가 미만 3 곡이있는 music 테이블에서 모든 열을 반환합니다 다음을 사용할 수 있습니다 "count"필드. 이것을 시도하십시오 ...

SELECT ArtistName 
FROM Music 
GROUP BY ArtistName 
HAVING Count(ArtistName) < 3 

이것은 각 노래마다 하나의 항목 만 있다고 가정합니다.

관련 문제