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 :

Jointure de deux tables


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 8
    Points : 3
    Points
    3
    Par défaut Jointure de deux tables
    Bonjour à vous tous,
    j'ai un souci pour extraire des données de deux tables dans une autre en gardant toujours toutes les colonnes de chacune comme suite:
    Table 1: col_1 ( 1,2,3,4,5,6)
    Table 2: col_2( 2,6,4)
    alors en faisant la jointure des ces deux tables, je veux avoir une table 3 avec les deux colonnes ( col_1 et col_2) mais en gardant l'ensemble de la col_1 comme suite:
    table3 : col_1(1,2,3,4,5,6)
    col_2( , 2, ,4, ,6)

    j'ai essayé avec ça mais ça na pas marché:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT 
       a.col_1, b.col_2
    FROM table1 as a
      left join table2 as b
      on a.col_1 = b.col_2

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 786
    Points
    30 786
    Par défaut
    Citation Envoyé par Sakura.ha Voir le message
    ça na pas marché:
    Quel résultat as-tu obtenu ?
    C'est cela qui pourra aiguiller vers une solution !
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Candidat au Club
    Inscrit en
    Juillet 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Merci pour votre reponse,
    et voila le résultat que j'ai obtenu c'est
    table3 : col_1(2,6,4)
    col_2(2,6,4)
    moi je veux garder l’ensemble de valeur de la colonne de la première table même s'ils existent pas dans la 2eme table
    Autrement dit: toutes les lignes de la première table doivent figurer dans les résultats, qu'il y ait ou non des données correspondantes dans la 2 ème table.

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Quel est votre SGBD ?

  5. #5
    Candidat au Club
    Inscrit en
    Juillet 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Je travaille sous SQLSERVER/2008

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    La jointure doit suffire alors :
    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
    With Table1 (col_1) as
    (
    select 1 union all
    select 2 union all
    select 3 union all
    select 4 union all
    select 5 union all
    select 6
    )
      ,  Table2 (col_2) as
    (
    select 2 union all
    select 6 union all
    select 4
    )
        select t1.col_1, t2.col_2
          from Table1 as t1
     left join Table2 as t2
            on t1.col_1 = t2.col_2;
     
    col_1       col_2
    ----------- -----------
    1           NULL
    2           2
    3           NULL
    4           4
    5           NULL
    6           6

  7. #7
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 786
    Points
    30 786
    Par défaut
    Est-ce bien exactement la requête que tu exécutes ?
    N'y a-t-il pas d'autres clauses dans ta requête, en particulier un WHERE avec une condition sur la table ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  8. #8
    Candidat au Club
    Inscrit en
    Juillet 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    Est-ce bien exactement la requête que tu exécutes ?
    N'y a-t-il pas d'autres clauses dans ta requête, en particulier un WHERE avec une condition sur la table ?
    Oui c'est bine ça ma requête mais j(ajoute une clause where ( where CONVERT(date,tab1.date1) = CONVERT(date,getdate())

  9. #9
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Sur la table 2 plutôt non ?

  10. #10
    Candidat au Club
    Inscrit en
    Juillet 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Sur la table 2 plutôt non ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT a.col_1 "plageHoraire"
    ,(convert(time,b.col_2)) "rdv"
     
     
      FROM table1 as a
     left JOIN table2 as b
      on  convert(convert(time,b.col_2))= a.col_1 
     
       where CONVERT(date,b.col_2) = CONVERT(date,getdate())

    Voici ma requête , la table 1 , c'est celle ou tout les lignes doivent figurer dans les résultats qu'il y ait ou non des données correspondantes dans la table2

  11. #11
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        SELECT a.col_1               as "plageHoraire"
             , convert(time,b.col_2) as "rdv"
          FROM table1 AS a
     LEFT JOIN table2 AS b
            ON convert(time,b.col_2) = a.col_1 
           AND CONVERT(date,b.col_2) = CONVERT(date,getdate());

  12. #12
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 786
    Points
    30 786
    Par défaut
    C'est certainement mieux comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT  a.col_1 "plageHoraire"
        ,   (CONVERT(TIME, b.col_2)) "rdv"
    FROM    table1  AS a
        LEFT JOIN
            table2  AS b
            ON  CONVERT(CONVERT(TIME, b.col_2)) = a.col_1 
            AND CONVERT(DATE, b.col_2) = CONVERT(DATE, GETDATE())
    ;
    En plaçant la restriction CONVERT(DATE, b.col_2) = CONVERT(DATE, GETDATE()) dans la clause WHERE, tu supprimes l'effet de la jointure externe.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  13. #13
    Candidat au Club
    Inscrit en
    Juillet 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    C'est certainement mieux comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT  a.col_1 "plageHoraire"
        ,   (CONVERT(TIME, b.col_2)) "rdv"
    FROM    table1  AS a
        LEFT JOIN
            table2  AS b
            ON  CONVERT(CONVERT(TIME, b.col_2)) = a.col_1 
            AND CONVERT(DATE, b.col_2) = CONVERT(DATE, GETDATE())
    ;
    En plaçant la restriction CONVERT(DATE, b.col_2) = CONVERT(DATE, GETDATE()) dans la clause WHERE, tu supprimes l'effet de la jointure externe.

    ah d’accord , la ça marche nickel : )
    Merci beaucoup

  14. #14
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Pour plus d'explication sur le phénomène, voir mon blog.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

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

Discussions similaires

  1. jointure entre deux tables mysql
    Par Invité dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 23/04/2006, 20h08
  2. jointure de deux tables de deux bases de données!
    Par JauB dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 04/01/2006, 11h05
  3. [MySQL] Jointure entre deux tables
    Par Flushovsky dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 03/10/2005, 18h55
  4. PROBLEME DE JOINTURE ENTRE DEUX TABLE
    Par DarkMax dans le forum Langage SQL
    Réponses: 13
    Dernier message: 13/01/2005, 15h11
  5. Jointure entre deux tables et résultat
    Par Asdorve dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/06/2004, 14h50

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