par
benji » 14 nov. 2011, 19:56
Bonsoir à tous,
Cette fois je me suis créé un compte puisque si ça continue, je vais devoir élire domicile ici

(c'était moi ça hier
ici) A croire que tous les soirs, je vais me trouver face à une requête que je n'arrive pas à résoudre
Donc ma question du jour est la suivante : réussir à faire, en SQL, un explode, comme en PHP.
Comme toujours, je ne viens pas ici sans avoir fait de recherches. Visiblement des solutions existent, à coup de SUBSTR, INSTR, SUBSTRING_INDEX, mais j'ai un peu de mal (évidemment, sinon je ne serais pas là), à trouver THE syntaxe correcte et me dépatouiller avec toutes ces fonctions. En admettant que lesdites fonctions soient effectivement la solution à mon problème.
Pour parler clairement, j'ai dans ma table, un champ "notation", qui contient 5 notes, séparées par le signe dièse '#'.
Ce que je veux obtenir au final, c'est de séparer les 5 notes, pour pouvoir en calculer la moyenne. En SQL hein. Car je veux pouvoir ordonner les résultats de ma requête selon cette moyenne justement.
Exemple :
notation
8#7#9#3#1
5#6#7#8#9
>> Le résultat attendu :
notation ----- note1 - note2 - note3 - note4 - note5
8#7#9#3#1 -- 8 7 9 3 1
5#6#7#8#9 -- 5 6 7 8 9
Ma modeste tentative...
SELECT id,nom,notation,
SUBSTRING_INDEX(notation,'#',1) AS note1
FROM matable WHERE notation!=0
Précision
Ce qui me retourne correctement la première note.
Je précise que le champ notation contient soit 0, soit les 5 notes séparées toujours de la même manière par le signe # (d'où la clause WHERE).
Petite complication
Les notes possibles vont de 1 à 10. Ce qui fait qu'entre deux signes dièses on peut aussi bien avoir la note sur un seul caractère, ou sur deux...
Je retourne à mes tests, des fois que j'ai un éclair de génie lol.
Merci pour votre aide !!

Bonsoir à tous,
Cette fois je me suis créé un compte puisque si ça continue, je vais devoir élire domicile ici :mrgreen: (c'était moi ça hier [url=http://forum.phpfrance.com/sql-bases-donnees/sum-group-peut-etre-des-jointures-t261200.html]ici[/url]) A croire que tous les soirs, je vais me trouver face à une requête que je n'arrive pas à résoudre #-o
Donc ma question du jour est la suivante : réussir à faire, en SQL, un explode, comme en PHP.
Comme toujours, je ne viens pas ici sans avoir fait de recherches. Visiblement des solutions existent, à coup de SUBSTR, INSTR, SUBSTRING_INDEX, mais j'ai un peu de mal (évidemment, sinon je ne serais pas là), à trouver THE syntaxe correcte et me dépatouiller avec toutes ces fonctions. En admettant que lesdites fonctions soient effectivement la solution à mon problème.
Pour parler clairement, j'ai dans ma table, un champ "notation", qui contient 5 notes, séparées par le signe dièse '#'.
Ce que je veux obtenir au final, c'est de séparer les 5 notes, pour pouvoir en calculer la moyenne. En SQL hein. Car je veux pouvoir ordonner les résultats de ma requête selon cette moyenne justement.
[b]Exemple :[/b]
[u]notation[/u]
8#7#9#3#1
5#6#7#8#9
>> Le résultat attendu :
notation ----- note1 - note2 - note3 - note4 - note5
8#7#9#3#1 -- 8 7 9 3 1
5#6#7#8#9 -- 5 6 7 8 9
[b]Ma modeste tentative...[/b]
[sql]SELECT id,nom,notation,
SUBSTRING_INDEX(notation,'#',1) AS note1
FROM matable WHERE notation!=0[/sql]
[b]Précision[/b]
Ce qui me retourne correctement la première note.
Je précise que le champ notation contient soit 0, soit les 5 notes séparées toujours de la même manière par le signe # (d'où la clause WHERE).
[b]Petite complication[/b]
Les notes possibles vont de 1 à 10. Ce qui fait qu'entre deux signes dièses on peut aussi bien avoir la note sur un seul caractère, ou sur deux...
Je retourne à mes tests, des fois que j'ai un éclair de génie lol.
Merci pour votre aide !! :priere: