Tunes 테이블이있는 음악 데이터베이스가 있습니다. 각 음악 레코드는 ArtistID
및 Rating
을 포함합니다.하위 쿼리 내의 SQL 하위 쿼리
내가하고 싶은 일은 각각의 고유 한 ArtistID
개의 필드와 아티스트의 곡에 대한 등급 값 중 일부가 0이 아님을 나타내는 열을 더한 것입니다.
:
는SELECT COUNT() FROM (
SELECT ID FROM Tune WHERE ArtistID=a AND Rating < 1 LIMIT 1
)
위의 쿼리는 (a가 참 또는 거짓 "SomeUnrated"반환 1 또는 0) 값.
그리고 .. 나는 곡 테이블에 등장하는 모든 고유 아티스트 ID를 반환하는 쿼리를 만들 수 있습니다
SELECT DISTINCT Artist.ID, Artist.Name
FROM Artist JOIN Tune ON Artist.ID=Tune.ArtistID
나는 것을 값의 목록은 다음과 같이 그래서이 두 쿼리를 결합 할 수있는 방법을 :
Artist.ID Artist.Name SomeUnrated
내가 SQLite는을 사용하고 있습니다. 이것은 "상관 관계가있는"부질의 예입니까?
아니오 :
는 다른 방법이
MAX()
과 같은 결과를 산출 할 수 당신은 하위 쿼리로 그 필요하지 않습니다하지만 당신은 그것으로 갈 조건이 필요합니다, 그래서 ... 서면으로, 이것은 * 단일 아티스트 *에 대한 SUM (등급)을 찾습니다. OP는 등급이 매겨지지 않은 예술가가 있는지를 표시 한 것 같습니다 *. –@AndriyM, OP의 질문에 대한 나의 해석은 그가 모든 곡을 평가하거나 부분적으로 만 평가 한 아티스트를 구별 할 수 있기를 원한다는 것입니다. 아마도'SomeUnrated'라는 이름은 오해의 소지가 있습니다. – paqogomez
@paqogomez : 고마워요. 저에게 주어진 다른 생각을 들었지만 필요한 결과를주지 못할 것 같네요. '등급'은 + ve, 0 또는 -ve 일 수 있습니다. 솔루션이 작동하는 유일한 방법은 SUM (Rating)이 Artist.ID에 속한 총 Tune 레코드 수와 같으면 1 또는 0을 반환하는 것입니다. 프로그래밍 방식으로 또는 단계적으로이 작업을 수행 할 수 있지만 실제로는 단일 SQL 문이 필요하며 SQL은 그렇게 뜨겁지 않습니다. :) – SparkyNZ