IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Regroupement de données dans un champs SQL


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 14
    Points : 8
    Points
    8
    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 "|".

    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

  2. #2
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    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.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    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 ?

  4. #4
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ?

  6. #6
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Oui, j'avais bien compris, d'ailleurs j'aurais pu aussi te suggérer cet exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

Discussions similaires

  1. [11gR2] [JSON/SQL] Extraction de données dans un champ au format JSON
    Par Filippo dans le forum PL/SQL
    Réponses: 3
    Dernier message: 12/03/2015, 12h27
  2. [AC-2010] Regroupement de données dans un champ unique sur état
    Par delahayen dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 06/10/2011, 03h01
  3. Réponses: 6
    Dernier message: 01/09/2010, 13h50
  4. [AC-2003] modifier les données dans le champs d'une table en sql
    Par carlostropico dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 01/12/2009, 17h24
  5. pb regroupement de données dans requette sql
    Par skyman272 dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 15/02/2006, 22h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo