2010-07-07 13 views
1

Existe-t-il un moyen de spécifier une procédure de tri pour ORDER BY, ou une sorte de logique personnalisée? Ce dont j'ai besoin est de vérifier d'autres données pour la colonne commandée, qui est également dans la rangée. Par exemple, si une colonne a une valeur plus élevée qu'une autre, mais qu'une certaine condition n'est pas remplie, elle est classée comme inférieure. En ce moment, je tire toutes les données dans la colonne, je le trierai en PHP avec usort(), puis je le paginiserai, mais il s'agit d'une mauvaise performance. Je voudrais vraiment le déplacer dans MySQL, est-ce possible? Si c'est le cas, comment? : PMySQL - Spécialisé Trier par?

Merci d'avance! Exemple de problème sur le site Web here - les records sont triés selon le pourcentage de victoires, mais les joueurs qui ont 1 partie jouée gagnent 100%. Je voudrais définir un seuil sur les jeux, puis les trier plus bas, même si leur pourcentage de gains est plus élevé.

+0

Publiez une partie de votre schéma de base de données. Je ne pense pas qu'un 'ORDER BY FIELD()' va fonctionner ici car il semble que vous ayez une logique supplémentaire. –

Répondre

2

Vous pouvez commander par multiples expressions:

ORDER BY games_played < 10, wins/losses DESC 

La première expression trie tous les joueurs qui ont joué plus de 10 jeux au-dessus de tous les joueurs qui ont Playes moins de 10 jeux. La deuxième expression trie par rapport de gain/perte. La deuxième expression est uniquement utilisée pour couper les lignes qui étaient égales pour la première expression. Cela signifie qu'un joueur qui a joué 10 parties apparaîtra toujours au-dessus d'un joueur qui a joué seulement 9 parties sans tenir compte de leurs rapports de victoire/perte.

+0

Doux, cela fonctionne comme un charme! Et embarrassant n'a même pas besoin de logique .. ^^ Merci beaucoup! –