如何使这个查询工作?

时间:2010-09-01 11:14:48

标签: mysql

您好我有以下查询:

SELECT
    cmfilm.*,
    cmgenre.titel AS genretitel,
    cmvertoning.*,
    cmzaal.titel AS zaaltitel
FROM 
    cmfilm 
  LEFT JOIN cmvertoning ON cmvertoning.film_id=cmfilm.id 
  LEFT JOIN cmgenre ON cmfilm.genre_id=cmgenre.id
  LEFT JOIN cmzaal ON cmvertoning.zaal_id=cmzaal.id 
GROUP BY 
    cmfilm.titel 
SORT BY 
    cmgenre.titel ASC

这似乎不起作用,排序部分存在问题,任何人都知道问题在哪里?

3 个答案:

答案 0 :(得分:2)

如果你的目标是对结果进行排序,那么你不应该使用ORDER BY吗?

喜欢这个;

SELECT cmfilm.*, cmgenre.titel AS genretitel, cmvertoning.*, cmzaal.titel AS zaaltitel FROM cmfilm LEFT JOIN cmvertoning ON cmvertoning.film_id=cmfilm.id LEFT JOIN cmgenre ON cmfilm.genre_id=cmgenre.id LEFT JOIN cmzaal ON cmvertoning.zaal_id=cmzaal.id GROUP BY cmfilm.titel ORDER BY cmgenre.titel ASC

答案 1 :(得分:1)

在SQL中,您需要按所选的所有非聚合列进行分组,以获得可预测的结果。只是因为MySQL没有给你一个错误,所以没有做对。

您的cmfilm.titel子句中似乎有group by,但您没有聚合函数(总和/计数等),因此现在,您可能应该放弃group by或者告诉我们更多关于你真正想要查询的内容。

答案 2 :(得分:0)

我认为它应该由ORDER BY代替SORT BY:

SELECT cmfilm.*, cmgenre.titel AS genretitel, cmvertoning.*, cmzaal.titel AS zaaltitel
FROM cmfilm
     LEFT JOIN cmvertoning ON cmvertoning.film_id=cmfilm.id
     LEFT JOIN cmgenre ON cmfilm.genre_id=cmgenre.id
     LEFT JOIN cmzaal ON cmvertoning.zaal_id=cmzaal.id
GROUP BY cmfilm.titel
ORDER BY cmgenre.titel:

如果不是问题,请附上错误消息。