MySQL Forums
Forum List  »  French

Re: "Traduction"
Posted by: Jean Molliné
Date: December 10, 2009 01:28PM

Ok, je vais tenter de traduire.

C'est du SQL assez avancé qu'on a là. Je pense que tu auras compris que la première ligne crée des variables (en SQL) comme on le fait dans pratiquement n'importe quel langage de programmation :
SET @num :=0, @rank :=0, @prev := NULL;
Chacune de ces variable est donc initialisée à 0 ou NULL.

Ensuite on les utilise dans la requête suivante pour établir un classement. Note qu'il y a, outre ces variables, l'utilisation de la fonction SQL if(expr, val-si-true, val-si-false).
En utilisant une mise en forme un peu différente, ce sera peut-être plus facile à suivre :
SELECT 
    @num  := @num + 1 AS row,
    @rank := if(@prev != php, @num, @rank) AS rank,
    country,
    @prev := php AS php 
FROM statsPHP 
ORDER BY php
Très très schématiquement (et si je ne fais pas erreur), MySQL va incrémenter @num pour chaque nouvelle ligne trouvée répondant aux critères de tris défini comme ici dans le ORDER BY. Pour chaque ligne, on affecte à @rank soit @num si @prev est différent de «php», soit @rank, puis on affecte «php» à @prev.

Je dois avouer que ça me dépasse un brin à ce niveau là, je ne fais que de la déduction logique par rapport au code, mais il faudrait que je bidouille là-dessus pas mal de temps pour maitriser ce concept.

En tous cas c'est une jolie trouvaille à explorer, dommage que je manque un peu de temps là, désolé ne ne pas être d'un plus grand secours... :-/

______________________________________________________________
Une question bien formulée, c'est un problème bien compris : ça représente déjà les 3/4 de la réponse ;)

Options: ReplyQuote


Subject
Views
Written By
Posted
4295
December 10, 2009 07:58AM
2611
December 10, 2009 09:31AM
2795
December 10, 2009 11:50AM
2555
December 10, 2009 11:53AM
Re: "Traduction"
2772
December 10, 2009 01:28PM
2480
December 10, 2009 07:59PM
2615
December 11, 2009 01:47AM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.