Поскольку это упражнение, я не хочу полностью портить эффект обучения, просто давая вам окончательное решение. Я постараюсь направить вас туда.
Ваша проблема в предложении WHERE
WHERE albums.tracks >= tracks.number
Полагаю, вы намереваетесь выполнить требование & ldquo; для каждого альбома без пропущенных треков & hellip; & rdquo;.
Однако это не то, что делает условие; скорее это исключает треки, количество которых превышает количество треков альбома.
Вам нужно что-то вроде: & ldquo; где количество дорожек, связанных с альбомом, (больше или) равно количеству дорожек альбома & rdquo;.
Другими словами: WHERE count(tracks.*) >= albums.tracks
. (Часть & ldquo; относящаяся к альбому & rdquo; реализуется условием объединения & mdash; исключаются треки, не относящиеся к альбому.)
См? Секрет часто заключается в том, чтобы просто перевести предложение на естественном языке в SQL.
Теперь мы столкнулись с проблемой, потому что у нас не может быть агрегатной функции, такой как count
в предложении WHERE
. Это потому, что WHERE
обрабатывается до GROUP BY
, где формируются группы.
К счастью для нас, существует своего рода & ldquo; WHERE
clause & rdquo; это обрабатывается после группировки, и это HAVING
.
Я оставляю вам остальное: ^)