2010-09-01 8 views
0

Bonjour j'ai la requête suivante:Comment faire marcher cette requête?

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 

ceci ne semble fonctionner, il y a un problème avec la partie tri, quelqu'un sait où est le problème?

+1

Quelle est l'erreur qu'il provoque? –

+0

@Martin Liversage Ah, édition simultanée. Pardon. – jensgram

+0

l'erreur est: Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près de 'SORT BY cmgenre.titel ASC' à la ligne 8 – vincent

Répondre

2

Si votre objectif est de trier le résultat, ne devriez-vous pas utiliser ORDER BY?

Comme ceci;

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

Je pense qu'il devrait par ORDER BY au lieu de TRIER PAR:

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: 

Si ce n'est pas le problème, s'il vous plaît inclure le message d'erreur.

+0

ordre par travaillé, tyvm – vincent

1

En SQL, vous devez regrouper TOUTES les colonnes non agrégées que vous sélectionnez pour obtenir des résultats prévisibles. Juste parce que MySQL ne vous donne pas une erreur, ne le fait pas correctement.

Vous semblez avoir cmfilm.titel dans votre group by clause, mais vous n'avez pas des fonctions d'agrégation (somme/compte, etc.), de sorte qu'il est maintenant, vous devriez probablement tomber que group by, ou nous en dire plus sur ce que vous voulez réellement interroger.

Questions connexes