Précédent   Forum du club des développeurs et IT Pro > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 27/12/2012, 10h37   #1
Sakura.ha
Invité de passage
 
Inscription : juillet 2010
Messages : 8
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 8
Points : 1
Points : 1
Envoyer un message via Skype™ à Sakura.ha
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 :
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
Sakura.ha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2012, 11h27   #2
al1_24
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 877
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 52
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 877
Points : 11 764
Points : 11 764
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
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2012, 11h31   #3
Sakura.ha
Invité de passage
 
Inscription : juillet 2010
Messages : 8
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 8
Points : 1
Points : 1
Envoyer un message via Skype™ à Sakura.ha
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.
Sakura.ha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2012, 12h18   #4
Waldar
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 6 278
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 35
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : septembre 2008
Messages : 6 278
Points : 13 549
Points : 13 549
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Quel est votre SGBD ?
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2012, 12h22   #5
Sakura.ha
Invité de passage
 
Inscription : juillet 2010
Messages : 8
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 8
Points : 1
Points : 1
Envoyer un message via Skype™ à Sakura.ha
Je travaille sous SQLSERVER/2008
Sakura.ha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2012, 12h51   #6
Waldar
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 6 278
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 35
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : septembre 2008
Messages : 6 278
Points : 13 549
Points : 13 549
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
La jointure doit suffire alors :
Code :
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
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2012, 12h53   #7
al1_24
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 877
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 52
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 877
Points : 11 764
Points : 11 764
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
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 27/12/2012, 13h05   #8
Sakura.ha
Invité de passage
 
Inscription : juillet 2010
Messages : 8
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 8
Points : 1
Points : 1
Envoyer un message via Skype™ à Sakura.ha
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())
Sakura.ha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2012, 13h10   #9
Waldar
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 6 278
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 35
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : septembre 2008
Messages : 6 278
Points : 13 549
Points : 13 549
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Sur la table 2 plutôt non ?
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2012, 13h15   #10
Sakura.ha
Invité de passage
 
Inscription : juillet 2010
Messages : 8
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 8
Points : 1
Points : 1
Envoyer un message via Skype™ à Sakura.ha
Citation:
Envoyé par Waldar Voir le message
Sur la table 2 plutôt non ?
Code :
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
Sakura.ha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2012, 13h36   #11
Waldar
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 6 278
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 35
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : septembre 2008
Messages : 6 278
Points : 13 549
Points : 13 549
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Comme ceci :
Code :
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());
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2012, 13h39   #12
al1_24
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 877
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 52
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 877
Points : 11 764
Points : 11 764
C'est certainement mieux comme ça :
Code :
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
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2012, 13h44   #13
Sakura.ha
Invité de passage
 
Inscription : juillet 2010
Messages : 8
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 8
Points : 1
Points : 1
Envoyer un message via Skype™ à Sakura.ha
Citation:
Envoyé par al1_24 Voir le message
C'est certainement mieux comme ça :
Code :
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
Sakura.ha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2012, 10h37   #14
CinePhil
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 13 659
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 49
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 : 13 659
Points : 25 562
Points : 25 562
Envoyer un message via MSN à CinePhil
Pour plus d'explication sur le phénomène, voir mon blog.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 !
CinePhil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 08h48.


 
 
 
 
Partenaires

Hébergement Web