2010-09-01 55 views
0

你好,我有以下查询:如何使这个查询工作?

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 

这似乎没有工作,没有与排序部分出了问题,谁知道问题出在哪里?

+1

它给出了什么错误? – 2010-09-01 11:16:35

+0

@Martin Liversage啊,同步编辑。抱歉。 – jensgram 2010-09-01 11:22:55

+0

错误是:您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,在第8行的'SORT BY cmgenre.titel ASC'附近使用正确的语法使用 – vincent 2010-09-01 11:25:26

回答

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 
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: 

如果这是没有问题的,请提供错误信息。

+0

order by working,tyvm – vincent 2010-09-01 11:33:26

1

在SQL中,您需要按所有您选择的非聚合列进行分组以获得可预测的结果。仅仅因为MySQL不会给你一个错误,并不是正确的。

你似乎有cmfilm.titelgroup by条款,但你有没有聚集函数(求和/计数等),这样因为它是现在,你应该丢弃group by,或告诉我们更多关于你真正想要什么进行查询。