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:在“FROM”附近:语法错误:

4

3 回答 3

2

不确定,为什么这很复杂。下面的查询应该为您返回每个搜索艺术家专辑的曲目计数:

     select artist, album, count(*) as tracksCount
     from tracks
     where artist = 'requested_artist'
     group by artist, album;
于 2012-12-01T21:57:34.053 回答
1
select artist, album, count(1) as countTracks
from tracks
where artist = @requestedArtist
group by artist, album
于 2012-12-01T21:59:31.920 回答
0

它并不复杂,但很难阅读。我第一眼就看到了错误。这里:

as albtbl, FROM tracks 

逗号是额外的。所以把它改成这样:

as albtbl FROM tracks 

希望能帮助到你。

于 2012-12-01T21:57:50.423 回答