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

Développement SQL Server Discussion :

Requete SQL avec plusieurs code


Sujet :

Développement SQL Server

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 30
    Points : 22
    Points
    22
    Par défaut Requete SQL avec plusieurs code
    Bonjour,

    J ai une table MultiCompte (IdMultiCompte, CodeUtilisateur1, CodeUtilisateur2,CodeUtilisateur3,....)

    CodeUtilisateur2 et CodeUtilisateur3 peut etre NULL.

    J'arrive pas a écrire une requête qui me liste la liste des MultiCompte avec le NOM de chaque Utilisateur

  2. #2
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2003
    Messages : 733
    Points : 1 668
    Points
    1 668
    Billets dans le blog
    8
    Par défaut
    Peux-tu être plus précis sur le résultat que tu veux obtenir.
    Est-ce que par exemple, tu veux obtenir le résultat suivant ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    IdMultiCompte  IdUtilisateur Nom 
    1   100  Jean-François Champollion
    1   150  Alain Delon
    2   160  Catherine Deneuve
    2   200  Marguerite Duras
    2   230  … 
    Etc..
    Si oui, Est-ce que les noms des utililisateurs se trouvent dans une autre table (Exemple dbo.Utilisateurs) ?
    etc.. (Il faut donner plus de précisions..).
    "Une idée mal écrite est une idée fausse !"
    http://hamid-mira.blogspot.com

  3. #3
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Je te propose ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    create table t_user
    (
        use_id int not null primary key,
        use_name nvarchar(32) not null,    
        use_lastname nvarchar(32) null
    )
    go
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    create table t_multiCompte
    (
       cpt_id int not null identity(1,1) primary key,
       cpt_use_id int not null references t_user(use_id),
       cpt_login nvarchar(32) not null
    )
    go*
    Nous allons peupler les tables
    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
    --Nous allons peupler les tables 
    insert into t_user(use_id,use_name,use_lastname)
    select 1,'WOLO','Laurent'
    union all
    select 2,'WOLO','Jean-Michel'
    union all
    select 3,'MFOUTOU','Marie'
    union all
    select 4,'DIBONDO','Lylicha'
    go
    insert into t_multiCompte(cpt_use_id,cpt_login)
    select 1,'laurent.w1' 
    union all
    select 1,'laurent.w2'
    union all
    select 1,'laurent.w3'
    union all 
    select 2,'jean-michel.w1'
    union all
    select 3,'marie.m1'
    union all
    select 3,'marie.m2'
    union all
    select 3,'marie.m3'
    go
    Et voici la requête que tu cherche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select use_name,use_lastname,cpt_login
    from t_user join dbo.t_multiCompte
    		on use_id=cpt_use_id
    Le résultat doit ressembler à quelque chose comme ceci:

    use_name use_lastname cpt_login

    ---------- ------------ ----------------
    WOLO Laurent laurent.w1
    WOLO Laurent laurent.w2
    WOLO Laurent laurent.w3
    WOLO Jean-Michel jean-michel.w1
    MFOUTOU Marie marie.m1
    MFOUTOU Marie marie.m2
    MFOUTOU Marie marie.m3

    Que voulez-vous exactement faire ?

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 30
    Points : 22
    Points
    22
    Par défaut
    En faite j ai une table MultiCompte

    IdMultiCompte, CodeUtilisateur1, CodeUtilisateur2,CodeUtilisateur3,CodeOptions
    0 1 2 3 5
    1 6 5

    avec une table Utilisateur
    IdUtilisateur NomUtilisateur
    1 toto
    2 tata
    3 fafa
    6 martin

    Je souhaite avec une requete pour avoir
    CodeUtilisateur NomUtilisateur1 NomUtilisateur2 NomUtilisateur3
    0 toto tata fafa
    1 Martin


    MERCI BCP pour vos repenses

  5. #5
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2003
    Messages : 733
    Points : 1 668
    Points
    1 668
    Billets dans le blog
    8
    Par défaut
    La représentation dans le modèle relationnel des attributs multivalués par des colonnes (Exemple : CodeUtilisateur1, CodeUtilisateur2 … CodeUtilisateurN) est la pire des manières de concevoir un MCD. En effet, cette solution :
    - manque de flexibilité,
    - conduit à des valeurs NULL dès qu’il y a moins de N valeurs,
    - rend complexe l’interrogation des données (ton poste en est une illustration),
    - et le pire, elle ne respecte même pas la première forme normale.

    Je compte personnellement déposer un projet de loi pour interner tous ceux qui conçoivent des schémas pareils !

    Une meilleure solution aurait été par exemple celle proposée par WOLO Laurent ci-dessus. Celle-ci est conforme aux règles de l’art du modèle relationnel.

    Allez, sans rancune ! Ci-dessous la requête répondant à ta demande.
    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
    CREATE TABLE Utilisateur  (
    IdUtilisateur int NOT NULL CONSTRAINT PK_Utilisateur PRIMARY KEY,
    NomUtilisateur varchar(50) NULL
    ) ; 
    GO 
    INSERT INTO  Utilisateur 
    (IdUtilisateur, NomUtilisateur) 
    VALUES 
    (1, 'Pierre de Fermat'),
    (2, 'Étienne Pascal'), 
    (3, 'Jean-Baptiste de Lamarck'), 
    (5, 'Blaise Pascal'), 
    (6, 'Alfred Russel Wallace');    
    GO 
     
    CREATE TABLE MultiCompte (
    IdMultiCompte INT NOT NULL CONSTRAINT PK_MultiCompte PRIMARY KEY, 
    CodeUtilisateur1 INT NULL,  
    CodeUtilisateur2 INT NULL,  
    CodeUtilisateur3 INT NULL  
    ) 
    GO 
    INSERT INTO MultiCompte   
    (IdMultiCompte, CodeUtilisateur1, CodeUtilisateur2, CodeUtilisateur3) 
    VALUES 
     (0,1,2,3)  , 
     (1,6,5, NULL);  
    GO
    Requête pour obtenir le résultat attendu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT M.IdMultiCompte, 
          U1.NomUtilisateur, 
          U2.NomUtilisateur, 
          U3.NomUtilisateur      
    FROM MultiCompte M 
    LEFT OUTER JOIN Utilisateur U1
      ON U1.IdUtilisateur = M.CodeUtilisateur1
    LEFT OUTER JOIN Utilisateur U2
      ON U2.IdUtilisateur = M.CodeUtilisateur2 
    LEFT OUTER JOIN Utilisateur U3
      ON U3.IdUtilisateur = M.CodeUtilisateur3
    Résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    IdMultiCompte	NomUtilisateur	NomUtilisateur	NomUtilisateur
    0	Pierre de Fermat	Étienne Pascal	Jean-Baptiste de Lamarck
    1	Alfred Russel Wallace	Blaise Pascal	NULL
    A+
    "Une idée mal écrite est une idée fausse !"
    http://hamid-mira.blogspot.com

  6. #6
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 30
    Points : 22
    Points
    22
    Par défaut
    MERCI BCP, je voie que je suis null en SQL

  7. #7
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Commence dès aujourd'hui à apprendre dans le fabuleux site de sqlpro
    Courage ca ira un jour

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2010] Requete access avec le code sql
    Par selmaa dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 19/05/2011, 16h32
  2. Réponses: 0
    Dernier message: 02/03/2011, 23h26
  3. Requete SQL avec plusieurs variables?
    Par jojo86 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/08/2010, 15h56
  4. Requete SQL avec plusieurs jointures
    Par Esil2008 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 15/09/2009, 12h51
  5. [JDBC] retour de requete sql avec valeur NULL
    Par maxxou dans le forum JDBC
    Réponses: 3
    Dernier message: 13/09/2004, 14h40

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