我的mysql select只显示一个结果,而不是我选择的所有结果

kzipqqlq  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(363)

我对这个mysql练习有一个问题,有没有人能帮我让它显示我想要的所有记录,因为现在它只从列中获取一个值 tytul 它给出了整个表中的最大值、最小值和平均值,而不是将它们分开,然后计算每个表中的最大值、最小值和平均值 tytul ```
SELECT
filmy.tytul,
FORMAT(MIN(wypozyczenia.data_zwrotu-wypozyczenia.data_wypozyczenia),1) AS "min",
FORMAT(MAX(wypozyczenia.data_zwrotu-wypozyczenia.data_wypozyczenia),1) AS "max",
FORMAT(AVG(wypozyczenia.data_zwrotu-wypozyczenia.data_wypozyczenia),1) AS "sre",
COUNT(wypozyczenia.id_kopii) AS "Razy"
FROM filmy,wypozyczenia,kopie
WHERE (filmy.id_filmu=kopie.id_filmu AND wypozyczenia.id_kopii=kopie.id_kopii)

qncylg1j

qncylg1j1#

基本上,您的查询缺少 GROUP BY 条款末尾:

GROUP BY filmy.tytul

您还应该使用标准的显式联接(与 ON 关键字)而不是老式的隐式连接(在 from 条款);最后,我建议使用表别名来缩短查询并使其更具可读性:

SELECT 
    f.tytul, 
    FORMAT(MIN(w.data_zwrotu-wypozyczenia.data_wypozyczenia),1) AS min_data
    FORMAT(MAX(w.data_zwrotu-wypozyczenia.data_wypozyczenia),1) AS max_data 
    FORMAT(AVG(w.data_zwrotu-wypozyczenia.data_wypozyczenia),1) AS sre, 
    COUNT(w.id_kopii) AS razy
FROM `filmy` f
INNER JOIN `kopie` k ON k.id_filmu = f.id_filmu 
INNER JOIN `wypozyczenia` w ON w.id_kopii = k.id_kopii
GROUP BY f.tytul

请注意,我删除了列别名周围的双引号;在mysql中,您需要对标识符使用backticks,或者更好的是,使用与sql关键字不冲突的标识符,因此不需要引用。

相关问题