Page 1 sur 1

Regroupement de données dans un champs SQL

Posté : 24 mars 2011, 16:45
par vince62fr
Bonjour à tous,

Je bloque sur un traitement sql et j'aimerai avoir votre aide.

Je m'explique:
J'ai dans une table 1 champ regroupant un ensemble d'id et de poids, séparé par un ";" eux mêmes séparés d'autres ID par un "|".

EX : 521;0.5|522;0.5|523;1|524;4|525;0.5|521;2
Où 521 = un id
et 0.5 = le poids de l'id
J'ai donc dans cet exemple 6 entrées pour 5 produits différents (le 521, 522, 523, 524, 525).

Ce que j'aimerai faire, c'est regrouper les différents ID et calculer un poids unique en additionnant les différentes valeurs.

L'objectif est donc d'obtenir cela :
521;2.5|522;0.5|523;1|524;4|525;0.5
Avez vous une idée ?

Merci

Re: Regroupement de données dans un champs SQL

Posté : 24 mars 2011, 21:41
par moogli
salut,

il faudrait, en php utiliser explode pour séparer toutes les valeurs et ensuite en parcourant le tableau résultat faire le calcul pour recréer la chaîne.


Par contre, bien que je connaisse pas l'application complète, je pense que ce type de "stockage" d'info est un problème de conception de l'appli ;)


@+

Re: Regroupement de données dans un champs SQL

Posté : 25 mars 2011, 18:04
par Maskime
+1 moogli
La dernière fois que j'ai rencontré ce genre de champs il y a eu aveu de "fainéantise de créer une autre table pour stocker que ça" de la part du précédent développeur.
Surtout si ça fait référence à un produit avec un Id, pourquoi pas stocker la valeur du poids directement dans la table qui enregistre les produits ? Si tu fais ça tu pourras utiliser les fonctions d’agrégation de MySQL et le laisser faire les sommes à ta place.

Je sais aussi que des fois c'est juste pas possible de faire autrement :D

Re: Regroupement de données dans un champs SQL

Posté : 02 avr. 2011, 00:42
par zied86
Bonjour,
vous pouvez utiliser cette requete select id,SUM(poids) from table group by id