ResultSet rs = null;
PreparedStatement st = null;
try {
final Database db = getDatabase();
final String sql = " select ar.id as artistId, ar.name as artistName, " +
" al.id as albumId, al.name as albumName, al.year as albumYear, count(t.id) as trackCount " +
" from albums al " +
" inner join artists ar " +
" on ar.id = al.artist_id " +
" left outer join tracks t " +
" on t.album_id = al.id " +
" where (t.artist_id = ? or al.artist_id = ?) " +
" group by artistId, artistName, albumId, albumYear, albumName " +
" order by al.year desc, al.name asc ";
st = db.prepare( sql );
st.setInt( 1, artistId );
st.setInt( 2, artistId );
rs = st.executeQuery();
final List<Album> albums = new ArrayList<Album>();