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

Requêtes MySQL Discussion :

Fusion de deux lignes d'une Bdd


Sujet :

Requêtes MySQL

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 52
    Points : 31
    Points
    31
    Par défaut Fusion de deux lignes d'une Bdd
    Bonjour,

    J'ai fait un script me permettant d'envoyer les données d'un fichier csv, vers une base de donnée. Mais certains champs du fichier csv se complète, tous les deux reliès par une valeur identique. Voici un exemple :

    ID | Technical Number | Last Name | First Name | Course Number | Room
    00143372 | FA10012998 | | | 34445525632 |Théorique412 |
    00143372 | FA10012998 | Durand | Lucien | 34445525632 | |

    et ces informations sont dans la même table.

    J'ai cherché sur internet comment faire mais je n'ai pas trouvé, si quelqu'un connaitssait une requete me permettant de fusionner ces deux lignes ce serait super

    Merci d'avance et bonne journée !

    EDIT : j'ai fait une erreur dans la présentation de mes informations. Désolé de mon étourderie. Les deux lignes sont identiques sauf qu'elles sont " complémentaires" dans ce que j'ai besoin, j'ai pas le choix de mon fichier source, donc je dois avec :'(

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 394
    Points
    18 394
    Par défaut
    Il faudrait voir si toutes vos données ont ce problème en particulier.
    Car dans ce que vous nous montrez, une ligne ne sert à rien, si on peut toujours l'éliminer avec une règle simple comme last_name is not null c'est du coup très facile.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 52
    Points : 31
    Points
    31
    Par défaut
    Merci d'y avoir répondu, mais j'avais fait une erreur dans la description de mes informations de la base de données.
    J'ai modifié mon post avec le problème rencontré. J'espère que j'ai bien réussi à décrire le fait que les deux lignes sont complémentaires dans les informations qu'elles renvoient. Et j'ai besoin de cette requête pour ensuite générer ces mêmes informations dans un calendrier au format pdf.

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 394
    Points
    18 394
    Par défaut
    Vous pouvez tenter le max de toutes les colonnes avec le group by sur l'id :
    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
    With MaTable (ID, [Technical Number], [Last Name], [First Name], [Course Number], Room) as
    (
    select '00143372', 'FA10012998', '', '', '34445525632', 'Théorique412' union all
    select '00143372', 'FA10012998', 'Durand', 'Lucien', '34445525632', ''
    )
      select ID,
             max([Technical Number]) as [Technical Number],
             max([Last Name])        as [Last Name],
             max([First Name])       as [First Name],
             max([Course Number])    as [Course Number],
             max(Room)               as Room
        from MaTable
    group by ID;
     
    ID       Technical Number Last Name First Name Course Number Room
    -------- ---------------- --------- ---------- ------------- ------------
    00143372 FA10012998       Durand    Lucien     34445525632   Théorique412

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 52
    Points : 31
    Points
    31
    Par défaut
    Merci pour ta réponse ! Mais bizarement j'arrive pas à la faire fonctionner, peut être que je suis nul ... phpMyAdmin m'indique que j'ai erreur à la ligne 1, j'ai beau cherché je ne la trouve pas ! j'ai cherché le fonctionnement de la fonction With... sans résultat.

    Mon code erreur est le suivant : "#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WITH planning (ClassNumber, [TechnicalNumber], [LastName], [FirstName], [CourseN' at line 1
    "


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    WITH planning (ClassNumber, [TechnicalNumber], [LastName], [FirstName], [CourseNumber], Room) AS
    (
    SELECT '00143372', 'FA10012998', '', '', '34445525632', '1228 - Exp SRC' union ALL
    SELECT '00143372', 'FA10012998', 'CLAUDE', 'ROBERT', '34445525632', ''
    )
      SELECT ClassNumber,
             max([TechnicalNumber]) AS [TechnicalNumber],
             max([LastName])        AS [LastName],
             max([FirstName])       AS [FirstName],
             max([CourseNumber])    AS [CourseNumber],
             max(Room)               AS Room
        FROM planning
    GROUP BY ClassNumber
    Merci Encore

  6. #6
    Expert éminent sénior
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 803
    Points : 34 074
    Points
    34 074
    Billets dans le blog
    14
    Par défaut
    WITH est là pour simuler la création de tables et n'existe pas en MySQL.

    Adaptez la partie à partir de SELECT Classnumber à vos tables réelles.

Discussions similaires

  1. Comparer deux lignes d'une même table dans une bdd
    Par Pierrot33 dans le forum Général Java
    Réponses: 3
    Dernier message: 19/11/2011, 20h04
  2. fusionner deux lignes en une seule issus de BDD
    Par xavioche77 dans le forum Langage
    Réponses: 2
    Dernier message: 25/10/2011, 15h43
  3. ecrire sur deux ligne dans une button
    Par zidenne dans le forum Delphi
    Réponses: 5
    Dernier message: 27/07/2006, 11h23
  4. Interdire la suppression d'une ligne dans une BDD
    Par griese dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 30/06/2006, 11h32

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