2010-09-01 54 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,或告訴我們更多關於你真正想要什麼進行查詢。