如果“轨道”表包含的A的行数少于“相册”表中报告的A的曲目数,则相册Z缺少曲目。对于每一张专辑,没有缺失的轨道,找到它的总运行秒。
发布于 2018-11-19 05:36:32
由于这是一个练习,我不想完全破坏学习的效果,只是给你最后的解决办法。我会尽力引导你去那里。
您的问题是WHERE子句
WHERE albums.tracks >= tracks.number我想你打算实现这样的要求:“对于每一张专辑,不丢失歌曲,…”。。
然而,这不是条件所做的;相反,它排除了其数量超过专辑的音轨计数的歌曲。
您需要这样的内容:“与专辑相关的歌曲计数(大于或)等于专辑轨道计数”。
换句话说:WHERE count(tracks.*) >= albums.tracks。(“关联相册”部分由联接条件实现-它不包括与相册无关的曲目。)
看见?秘诀往往只是将一个自然语言句子翻译成SQL。
现在我们面临一个问题,因为在count子句中不能有像WHERE这样的聚合函数。这是因为WHERE是在形成组的GROUP BY之前处理的。
幸运的是,有一种“WHERE子句”是在分组后处理的,即HAVING。
我把剩下的留给你:^)
https://stackoverflow.com/questions/53368580
复制相似问题