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 SQL Discussion :

[Requête]comment mettre des données d'une même colonne dans 2 colonnes différentes ?


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 36
    Points : 28
    Points
    28
    Par défaut [Requête]comment mettre des données d'une même colonne dans 2 colonnes différentes ?
    Bonjour,

    voici mon problème, j'ai une table famille avec une colonne de code famille (et d'autres données qui ne m'intéresse pas pour cette requete) et une table Individu avec également le code famille et en plus le nom, prénom, adresse des individusetcatégorie d'individu. Un individu n'a qu'un code famille mais une famille peut avoir plsrs individu.

    J'ai une requete assez simple qui me renvoit le code famille, nom, prenom civilité et adresse des individus dont la catégorie est égale à "inscrit".

    Mon problème c'est que j'ai résultat dans ce style:
    codeF civilité nom prenom adresse
    120 M. Dupont richard aaaaaaaaaaa
    133 M. Durant philippe bbbbbbbbbbb
    133 MM Durant martine bbbbbbbbbbb
    140 M. DD patrick ccccccccccc
    140 ML DD alice ccccccccccc
    145 MM TT aa ddddddddddd

    alors qu'en fait j'aimerais avoir qqchose comme ça :
    codeF nom prenom nom prenom adresse
    120 Dupont richard aaaaaaaaaaa
    133 Durant philippe Durant martine bbbbbbbbbbb
    140 DD patrick DD alice ccccccccccc
    145 TT aa ddddddddddd

    comme je ne suis très très loins d'etre une experte du sql, estce que vous savez si ce que j'essaie de faire est possible ? et si oui comment faire ?

    merci d'avance

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 838
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 838
    Points : 52 931
    Points
    52 931
    Billets dans le blog
    5
    Par défaut
    Ce que vous essayez de faire est possible mais complexe et surtout idiot. Vous avez une base normalisée et vous tentez de faire un fichier style COBOL. Dans ce cas, soit vous rester avec un SGBDR et une base normalisée, soit passez vous d'un SGBDR et utilisez des fichiers.

    Commensez par apprendre ce qu'est un SGBDR (qui repose sur une théorie mathématique) et la syntaxe du langage SQL. Il existe de nombreux ouvrages sur le sujet, et mon site comme mon bouquin peuvent vous y aider.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 36
    Points : 28
    Points
    28
    Par défaut
    l'utilisation d'un SGBDR n'est pas idiot parce que vous vous doutiez bien qu'il n'a pas été conçu dans le but de répondre à cette requete parce que c'est clair que ça aurait été vraiment idiot...
    mais bon... le résultat que je cherche à avoir est une demande que quelqu'un m'a faite pour un besoin bien ponctuelle (ya des fonctionnelles qui se réveillent un jour avec des idées bizarres). et comme le sql n'est pas vraiment ma spécialité mais que bon pour des raisons obscures on m'a chargé de voir ça et bien je viens voir ici si qq1 peut m'aider.

    merci de votre compréhension...

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 838
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 838
    Points : 52 931
    Points
    52 931
    Billets dans le blog
    5
    Par défaut
    la solution :

    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
    30
    31
    32
    CREATE TABLE T_PERSONNE
    (codeF INT,
     civilite CHAR(2),
     nom      VARCHAR(10),
     prenom   VARCHAR(10),
     adresse  VARCHAR(16))
     
    INSERT INTO T_PERSONNE VALUES (120, 'M.', 'Dupont', 'richard', 'aaaaaaaaaaa')
    INSERT INTO T_PERSONNE VALUES (133, 'M.', 'Durant', 'philippe', 'bbbbbbbbbbb')
    INSERT INTO T_PERSONNE VALUES (133, 'MM', 'Durant', 'martine', 'bbbbbbbbbbb')
    INSERT INTO T_PERSONNE VALUES (140, 'M.', 'DD', 'patrick', 'ccccccccccc')
    INSERT INTO T_PERSONNE VALUES (140, 'ML', 'DD', 'alice', 'ccccccccccc')
    INSERT INTO T_PERSONNE VALUES (145, 'MM', 'TT', 'aa', 'ddddddddddd')
     
    SELECT T1.codeF, T1.nom AS nom1, T1.prenom AS prenom1,
           T2.nom AS nom2, T2.prenom AS prenom2,
           T1.adresse
    FROM   T_PERSONNE T1
           LEFT OUTER JOIN T_PERSONNE T2
                ON T1.codeF = T2.codeF
                   AND T1.adresse = T2.adresse 
                   AND T1.civilite <> T2.civilite
                   AND T1.prenom <> T2.prenom
     
    codeF       nom1       prenom1    nom2       prenom2    adresse          
    ----------- ---------- ---------- ---------- ---------- ---------------- 
    120         Dupont     richard    NULL       NULL       aaaaaaaaaaa
    133         Durant     philippe   Durant     martine    bbbbbbbbbbb
    133         Durant     martine    Durant     philippe   bbbbbbbbbbb
    140         DD         patrick    DD         alice      ccccccccccc
    140         DD         alice      DD         patrick    ccccccccccc
    145         TT         aa         NULL       NULL       ddddddddddd
    Mais je vais vous expliquer pourquoi ce modèle est stupide :
    Vous pouvez avoir des couples de personnes homonyme et de même sexe.

    Imaginez ce qui va se passer si vous rajouter :
    INSERT INTO T_PERSONNE VALUES (200, 'M.', 'Dupont', 'Claude', 'aaaaaaaaaaa')
    INSERT INTO T_PERSONNE VALUES (200, 'M.', 'Dupont', 'Claude', 'aaaaaaaaaaa')

    Le seul moyen de résoudre ce problème aurait été de réjouter une colonne de distinction pour les deux parties du couple, indépendemment des prenoms et civilité.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. Extraire des données d'une même cellule, dans plusieurs fichiers
    Par chicanne dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 31/07/2016, 12h06
  2. [XL-2013] Script pour mettre des données sur une même ligne
    Par initial32 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 09/12/2014, 13h45
  3. [MySQL] comment insérer des données d'une liste déroulante dans un champ texte
    Par berti dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 23/01/2008, 09h12
  4. Réponses: 4
    Dernier message: 27/03/2007, 09h49
  5. Réponses: 16
    Dernier message: 20/03/2006, 23h21

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