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

PHP & Base de données Discussion :

Résumer plusieurs lignes en une seule


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Juillet 2006
    Messages : 233
    Par défaut Résumer plusieurs lignes en une seule
    Bonjour,

    J'ai une table qui contient 4 champs ;
    index
    p1
    p2
    p3

    Mon objectif est de regrouper au mieux pour avoir l'information avec le moins de lignes possibles.

    Voici un exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    1201	0,802	0,05	0,07
    1202	0,802	0,05	0,07
    1203	0,802	0,05	0,07
    1204	0,052	0,035	0,076
    1205	0,802	0,05	0,07
    1206	0,802	0,05	0,07
    1207	0,802	0,05	0,07
    1208	0,802	0,05	0,07
    1209	0,802	0,05	0,07
    1224	0,802	0,05	0,07
    1225	0,802	0,05	0,07
    1226	0,052	0,035	0,076
    1228	0,802	0,05	0,07
    1229	0,802	0,05	0,07
    1231	0,802	0,05	0,07
    1234	0,802	0,05	0,07
    1236	0,052	1	0,076
    1239	0,802	0,05	0,07
    1240	0,802	0,05	0,07
    1242	0,9653	0,398	0,66
    1246	0,823729	0,8495	0,885
    1248	0,802	0,05	0,07
    1249	0,052	0,035	0,076
    1250	0,052	0,035	0,076
    1251	0,802	0,05	0,07
    1252	0,802	0,05	0,07
    1253	0,802	0,05	0,07
    1254	0,802	0,05	0,07
    1256	0,802	0,05	0,07
    La série 120 serait donc remplacée par les 2 lignes suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    120	0,802	0,05	0,07
    1204	0,052	0,035	0,076
    La série 122 serait donc remplacée par les 2 lignes suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    122	0,802	0,05	0,07
    1226	0,052	0,035	0,076
    La série 123 serait donc remplacée par les 2 lignes suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    123	0,802	0,05	0,07
    1236	0,052	1	0,076
    Mais la série 124 serait donc remplacée par les 4 lignes suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    124	0,802	0,05	0,07
    1242	0,9653	0,398	0,66
    1246	0,823729	0,8495	0,885
    1249	0,052	0,035	0,076
    On n'y gagne qu'une seule ligne qu'on résume, les autres lignes sont laissées avec leurs détails!


    La série 125 serait donc remplacée par les 2 lignes suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    1250	0,052	0,035	0,076
    125	0,802	0,05	0,07
    Cet exemple résume la philosophie des regroupements que je dois faire.

    Merci d'avance.

  2. #2
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Par défaut
    Bonjour.

    Apparemment vous avez souvent :
    Sauf pour les postes suivants, dont le contenu (p1, p2, p3) est différent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    1204	0,052	0,035	0,076
    1236	0,052	1	0,076
    1242	0,9653	0,398	0,66
    1246	0,823729	0,8495	0,885
    1249	0,052	0,035	0,076
    1250	0,052	0,035	0,076
    Ne faut-il pas faire parcourir l'index 12xx (quelqu'il soit) dans la table ci dessus ?
    Si l'index est égal on prend les valeurs du poste correspondant à cet index.
    Ou alors j'ai rien compris !...

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Juillet 2006
    Messages : 233
    Par défaut
    Merci iakou de ta réponse rapide,

    En réalité j'ai beaucoup plus que des série 12xx pour la valeur du champ index je peux avoir facilement plusieurs milliers et je peux avoir des valeurs index qui commencent par n'importe quel chiffre et ont une longueur qui varie de 1 à 20 chiffres.

    • Index est une clé primaire de ma table
    • P1,p2,p3 sont des champs float ou double


    (Index contient toujours des valeurs entières et je peux le traiter au besoin comme une chaine de caractères)
    Je crée par exemple une table temporaire avec un champ Dixi qui est vide au départ et que je remplis avec le champ index moins le chiffre à droite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update tempor set dixi=substring(trim(index),1,length(trim(index))-1)
    Le traitement est fait maintenant sur la table tempor avec des groupements sur les champs (dixi,p1,p2,p3 )
    S'il y a plusieurs occurrences de (dixi,p1,p2,p3 ), on les supprime pour ne laisser qu'un seul représentant..etc

    Est ce que quelqu'un peut m'aider à poursuivre le raisonnement jusqu'au bout? C'est à dire avoir un tableau organisé comme dans post précédent.


    Merci d'avance.



    Pour

  4. #4
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 60
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Tu veux traiter ça en mysql ou bien en PHP ?
    Il me semble que, vu que ça n'est que de la cosmétique, à ce stade, c'est plus logique de le traiter en PHP.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Juillet 2006
    Messages : 233
    Par défaut
    Bonjour,
    bien sûr que je préfère traiter ça en MySQL, car je débute en php. Je suis d'ailleurs au TP2 de ton tuto php.

    Merci d'avance.

    PS: j'ai pas bien compris :vu que ça n'est que de la cosmétique Je pensais que cosmétique c'est genre parfum etc...

  6. #6
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Juillet 2006
    Messages : 233
    Par défaut
    Bonjour Dendrite,

    Est ce que tu as reçu un message privé que je t'ai envoyé hier?

    Merci.

Discussions similaires

  1. Regrouper données plusieurs ligne en une seule
    Par willytito dans le forum Access
    Réponses: 2
    Dernier message: 03/09/2007, 10h35
  2. Plusieurs lignes dans une seule
    Par rlnd23 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 07/02/2007, 16h35
  3. [MySQL] Remplir plusieurs lignes d'une seule table avec le même formulaire
    Par zehni dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 07/09/2006, 12h12
  4. Réponses: 4
    Dernier message: 07/09/2006, 12h12
  5. Concatenation de plusieurs lignes en une seule
    Par stawen dans le forum Langage SQL
    Réponses: 2
    Dernier message: 31/03/2005, 13h55

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