2012-12-01 57 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); 

索里对问题的脏标题,但我不明白如何更简要解释它。

问题: 如何显示请求的艺术家的专辑列表和每个显示的专辑计算在单个查询中请求当前专辑中的艺术家的曲目的计数。

我已经试过这样的事情:

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