Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/03/2011, 23h43   #1
Invité de passage
 
Inscription : mars 2011
Messages : 14
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 14
Points : 0
Points : 0
Par défaut Regroupement de données dans un champs SQL

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 "|".

Citation:
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 :
Citation:
521;2.5|522;0.5|523;1|524;4|525;0.5
Avez vous une idée ?

Merci
vince62fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2011, 00h24   #2
Membre émérite
 
Avatar de alain31tl
 
Alain
Inscription : novembre 2005
Messages : 897
Détails du profil
Informations personnelles :
Nom : Alain
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : novembre 2005
Messages : 897
Points : 910
Points : 910
Salut

Tu as peut-être des raisons particulières pour souhaiter tout regrouper dans un seul champ, mais je trouve un peu étrange cette façon de procéder.

Et si je comprends bien, tu veux obtenir le cumul "poids" associé à chaque "id". (?)
=> ID visiblement non auto-incrementé.

Perso, j'utiliserais au moins 2 tables ce qui faciliterait le traitement des différentes données (calcul) et les présenter comme tu l'entends.
__________________
Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.
alain31tl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2011, 09h40   #3
Invité de passage
 
Inscription : mars 2011
Messages : 14
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 14
Points : 0
Points : 0
Effectivement, ça peut sembler étrange mais c'est le seul moyen que j'ai trouvé pour limiter le nbre d'enregistrement dans la table.

En fait, je souhaite associer ensemble tout ce qu'un membre ajoute dans ses favoris.
Imaginons qu'un membre ajoute 10 sites à ses favoris, ce fonctionnement me permet ainsi de ne faire que 10 enregistrements dans la table.
1 enregistrement par favoris, associés aux 9 autres.

Alors que si je crée une entrée pour chaque association, dans ce cas j'arrive à 90 entrées. Tu imagines si j’atteins 200 000 sites associés, j'en serai à 2 millions d'enregistrements ! Ca serait ingérable !

Quel serais ton idée avec 2 tables ?
vince62fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2011, 19h46   #4
Membre émérite
 
Avatar de alain31tl
 
Alain
Inscription : novembre 2005
Messages : 897
Détails du profil
Informations personnelles :
Nom : Alain
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : novembre 2005
Messages : 897
Points : 910
Points : 910
Citation:
Envoyé par vince62fr Voir le message
Quel serais ton idée avec 2 tables ?
Dans une première table "membres", tu enregistres les différents membres, ainsi que certaines données utiles (email, adresse, etc..) si nécessaire.
Chaque enregistrement est identifié par un id (auto-incrémenté).

Dans une seconde table "favoris", tu crées 2 champs.
Exemple :
- id-membre
- site

Puisque tu peux récupérer l'id d'un membre dans ta table "membres", il est facile ensuite de créer une nouvelle ligne dans ta table "favoris".
Exemple :
Code :
1
2
3
4
5
6
7
id-membre 14 
       favoris Site EEE
               Site RRR
               Site TTT
id-membre 120
       favoris Site DDD
       favoris SIte SSS
__________________
Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.
alain31tl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 15h41   #5
Invité de passage
 
Inscription : mars 2011
Messages : 14
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 14
Points : 0
Points : 0
Citation:
Envoyé par alain31tl Voir le message
Dans une première table "membres", tu enregistres les différents membres, ainsi que certaines données utiles (email, adresse, etc..) si nécessaire.
Chaque enregistrement est identifié par un id (auto-incrémenté).

Dans une seconde table "favoris", tu crées 2 champs.
Exemple :
- id-membre
- site

Puisque tu peux récupérer l'id d'un membre dans ta table "membres", il est facile ensuite de créer une nouvelle ligne dans ta table "favoris".
Exemple :
Code :
1
2
3
4
5
6
7
id-membre 14 
       favoris Site EEE
               Site RRR
               Site TTT
id-membre 120
       favoris Site DDD
       favoris SIte SSS
En fait je souhaite aller plus loin que çà.
L'idée c'est que site le membre 14 et 120 ajoute tous les 2 le site EEE, dans ce cas je dois ajouter les différentes combinaison à tous les membres.

Ca donnerai ça :
id-membre : 14
favoris : Site EEE
id-membre : 14
favoris : Site RRR
id-membre : 14
favoris : Site TTT
id-membre : 14
favoris : Site DDD
id-membre : 14
favoris : Site SSS

id-membre : 120
favoris : Site EEE
id-membre : 120
favoris : Site RRR
id-membre : 120
favoris : Site TTT
id-membre : 120
favoris : Site DDD
id-membre : 120
favoris : Site SSS

J'obtiens ainsi bcp (trop) d'enregistrement dans la table.
C'est pour cela que j'aimerai ne faire qu'un enregistrement par membre en y incluant une liste de site plutôt qu'une enregistrement par favoris.

Une autre idée ?
vince62fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 18h22   #6
Membre émérite
 
Avatar de alain31tl
 
Alain
Inscription : novembre 2005
Messages : 897
Détails du profil
Informations personnelles :
Nom : Alain
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : novembre 2005
Messages : 897
Points : 910
Points : 910
Oui, j'avais bien compris, d'ailleurs j'aurais pu aussi te suggérer cet exemple :
Code :
1
2
3
4
5
6
7
8
id-membre 14 
       favoris Site EEE               
               Site TTT
               Site RRR

id-membre 120
       favoris Site DDD
       favoris Site EEE
Comme tu l'observes, les membres 14 et 120 ont des favoris communs.

Ensuite, je ne vois pas en quoi celà peut gêner d'avoir trop d'enregistrements.
Une base de données, c'est fait pour celà.

Maintenant, si comme tu le souhaites ne faire qu'un seul enregistrement par membre, et collecter dans ce même champ unique toutes les infos relatives à un membre, je te souhaite bien du courage pour la présentation de ces données.
__________________
Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.
alain31tl est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h28.


 
 
 
 
Partenaires

Hébergement Web