2012-12-01 2 views
1

복잡한 쿼리를 작성해야합니다. 나는 테이블이 있습니다 질문의 더러운 제목리스트에 아티스트와 앨범을 요청한 모든 앨범 트랙 수에 대한 아티스트 및 디스플레이 앨범 목록 선택

CREATE TABLE IF NOT EXISTS tracks 
    (id INTEGER PRIMARY KEY, path TEXT, 
    title TEXT, artist TEXT, 
    album TEXT, genre TEXT, 
    duration INTEGER, rating INTEGER); 

Sory을하지만 난 더 곧 그것을 설명하는 방법을 이해하지 않습니다.

질문 : 요청한 아티스트 및 표시된 각 앨범의 앨범 목록을 표시하는 방법은 단일 쿼리에서 현재 앨범의 아티스트를 요청한 트랙 수를 계산합니다.

SELECT albtbl.album as album, albtbl.artist as artist, 
(SELECT count(*) FROM trackstbl WHERE trackstbl.artist = albtbl.aritst) as tracksCount 
FROM (SELECT tbl.album as album, tbl.artist as artist, count(title) as tracksCount FROM tracks as tbl WHERE tbl.artist = 'requested_artist' 
GROUP BY tbl.album) as albtbl, FROM tracks as trackstbl ORDER BY album ASC 

을 있지만 컴파일되지 :

나는 이런 식으로 뭔가를 시도

SQLiteException: near "FROM": syntax error:

답변

2

확실하지,이 복잡한 이유. 아래 쿼리는 검색 아티스트의 각 앨범에 대한 트랙 수를 반환해야합니다.

 select artist, album, count(*) as tracksCount 
    from tracks 
    where artist = 'requested_artist' 
    group by artist, album; 
+0

대단히 감사합니다. 내가 생각한 것보다 더 쉽게 쿼리합니다. – testCoder

0

별로 읽기는 어렵지 않습니다. 나는 첫눈에 오류를 보았다. 여기 :

as albtbl, FROM tracks 

쉼표는 별도입니다. 그래서 다음으로 변경하십시오 :

as albtbl FROM tracks 

희망이 있습니다.

1
select artist, album, count(1) as countTracks 
from tracks 
where artist = @requestedArtist 
group by artist, album 
관련 문제