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 gauche avec paramètre


Sujet :

Langage SQL

  1. #1
    Membre actif
    Inscrit en
    Janvier 2006
    Messages
    1 218
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 218
    Points : 257
    Points
    257
    Par défaut Jointure gauche avec paramètre
    Bonjour,
    Je débute en SQL et je voulais savoir comment faire une jointure gauche avec paramètre.
    Deux tables
    Articles avec codes et libellés
    Coût avec code, année et coût

    J'ai une requête simple ou j'affiche la liste des articles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Select code, libellé
    From Article
    Là je veux afficher si la base est renseigné le coût 2015 de chaque article.
    Ceux qui n'ont pas de coût 2015 doivent toujours être affiché.
    Comment faire ?

    Cordialement.

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345

  3. #3
    Membre éclairé Avatar de bstevy
    Homme Profil pro
    Solutions Architect
    Inscrit en
    Mai 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Japon

    Informations professionnelles :
    Activité : Solutions Architect
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 552
    Points : 870
    Points
    870
    Par défaut
    un truc dans le genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Select A.code, A.libellé, C.coût
    From Article A
    left outer join Coût C on A.code = C.code and C.année = 2015
    ;
    ca devrait ne joindre que sur ceux qui ont un cout en 2015

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 912
    Points
    38 912
    Billets dans le blog
    9
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Select Art.code
          ,Art.année
          ,Cout.cout
    From articles as Art
    Left outer join cout 
      on cout.code = Art.code

  5. #5
    Membre expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 563
    Points : 3 404
    Points
    3 404
    Par défaut
    Petite question : quel est l'avantage/la différence de l'utilisation des jointures par rapport à ceci :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT A.CODE, A.LIBELLE, C.COUT
    FROM ARTICLE A, COUT C
    WHERE A.CODE = C.CODE AND C.ANNEE = 2015

  6. #6
    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
    La jointure avec JOIN est plus claire à lire que lorsque vos mélangez les conditions de jointures et les conditions de restriction dans le WHERE.
    Il m'est arrivé plusieurs fois, sur les forums de DVP, de résoudre un problème de requête rien qu'en ré-écrivant les jointures selon la norme (JOIN) qui est quand même en vigueur depuis 1992. Il serait temps de s'y mettre et d'enfin laisser tomber les jointures à l'ancienne !
    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 !

  7. #7
    Membre expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 563
    Points : 3 404
    Points
    3 404
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    La jointure avec JOIN est plus claire à lire que lorsque vos mélangez les conditions de jointures et les conditions de restriction dans le WHERE.
    Il m'est arrivé plusieurs fois, sur les forums de DVP, de résoudre un problème de requête rien qu'en ré-écrivant les jointures selon la norme (JOIN) qui est quand même en vigueur depuis 1992. Il serait temps de s'y mettre et d'enfin laisser tomber les jointures à l'ancienne !
    Personnellement je trouve la jointure dans la clause WHERE plus lisible qu'avec l'utilisation du JOIN. Notamment car l'ensemble des tables concernées par la requête sont dans la clause FROM et qu'il est facile de différencier une condition de jointure (a.id = b.id) d'une condition de restriction dans la clause WHERE.

  8. #8
    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
    Vous n'avez pas dû être souvent confronté à des grosses requêtes avec plein de jointures et plein de conditions de restriction pour écrire cela !
    Encore plus si, à l'intérieur du WHERE, les conditions de jointure et de restriction sont elles mêmes mélangées.

    J'ai besoin de temps en temps de fouiller dans du code SQL de ce genre et la première chose que je fais quand je me trouve en présence d'une requête bordélique de ce genre, c'est de la réécrire selon la norme qui, je le rappelle, est en vigueur depuis 1992, soit 23 ans !

    C'est un peu comme si on continuait aujourd'hui à écrire des programmes en Basic avec des numéros de lignes et des GOTO !

    Une requête avec les jointures normalisées et correctement indentée se lit quasiment comme une phrase dans un livre. Les associations entre les tables sont évidentes et on peut presque visualiser le MCD rien qu'en lisant la requête.

    Franchement, lire encore aujourd'hui une défense des jointures à l'ancienne, ça me sidère !

    Un petit exemple de requête multi-jointures :
    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
    SELECT fd.fdip_abreviation AS Abreviation_formation,
    	i.c_civilite AS Civilite,
    	i.nom_patronymique AS Nom,
    	i.prenom AS Prenom,
    	EXTRACT(YEAR FROM i.d_naissance) AS Annee_naissance,
    	p.l_nationalite AS Nationalite,
    	b.bac_code AS Code_BAC,
    	b.bac_libelle AS Libelle_BAC,
    	d.tdipl_code AS Code_dernier_diplome,
    	d.tdipl_libelle AS Type_dernier_diplome,
    	h.hist_libelle_der_dipl AS Libelle_dernier_diplome
    FROM grhum.individu_ulr i
    INNER JOIN grhum.pays p ON p.c_pays = i.c_pays_nationalite
    INNER JOIN grhum.etudiant e ON e.no_individu = i.no_individu
    	INNER JOIN grhum.bac b ON b.bac_code = e.bac_code
    	INNER JOIN garnuche.historique h ON h.etud_numero = e.etud_numero
    		INNER JOIN garnuche.type_diplome d ON d.tdipl_code = h.tdipl_code_der_dipl
    		INNER JOIN garnuche.insc_dipl id ON id.hist_numero = h.hist_numero
    			INNER JOIN scolarite.scol_formation_specialisation s ON s.fspn_key = id.dspe_code
    				INNER JOIN scolarite.scol_formation_diplome fd ON fd.fdip_code = s.fdip_code
    WHERE h.hist_annee_scol = 2013
    ORDER BY fd.fdip_abreviation, i.nom_patronymique, i.prenom
    La même à l'ancienne un peu mélangée :
    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
    SELECT fd.fdip_abreviation AS Abreviation_formation,
    	i.c_civilite AS Civilite,
    	i.nom_patronymique AS Nom,
    	i.prenom AS Prenom,
    	EXTRACT(YEAR FROM i.d_naissance) AS Annee_naissance,
    	p.l_nationalite AS Nationalite,
    	b.bac_code AS Code_BAC,
    	b.bac_libelle AS Libelle_BAC,
    	d.tdipl_code AS Code_dernier_diplome,
    	d.tdipl_libelle AS Type_dernier_diplome,
    	h.hist_libelle_der_dipl AS Libelle_dernier_diplome
    FROM grhum.individu_ulr i, grhum.pays p, grhum.bac b, garnuche.type_diplome d, grhum.etudiant e, garnuche.historique h, scolarite.scol_formation_specialisation s, scolarite.scol_formation_diplome fd, garnuche.insc_dipl id 
    WHERE p.c_pays = i.c_pays_nationalite
    	AND e.no_individu = i.no_individu
    	AND b.bac_code = e.bac_code
    	AND h.hist_annee_scol = 2013
    	AND d.tdipl_code = h.tdipl_code_der_dipl
    	AND id.hist_numero = h.hist_numero
    	AND fd.fdip_code = s.fdip_code
    	AND s.fspn_key = id.dspe_code
    	AND h.etud_numero = e.etud_numero
    ORDER BY fd.fdip_abreviation, i.nom_patronymique, i.prenom
    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 !

  9. #9
    Membre expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 563
    Points : 3 404
    Points
    3 404
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Un petit exemple de requête multi-jointures
    Merci pour l'exemple. Il est vrais que c'est plus lisible sur ce genre de requête..

  10. #10
    Membre actif
    Inscrit en
    Janvier 2006
    Messages
    1 218
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 218
    Points : 257
    Points
    257
    Par défaut
    Avec le bout de code que vous me donnez, c'est bien le coût 2015 qui sort.
    En revanche si un article n'a pas de coût 2015, il ne s'affiche pas.
    Hors moi je souhaite avec la base article complète et que s'affiche en colonne s'il y en a un le coût 2015.

  11. #11
    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
    Citation Envoyé par leloup84 Voir le message
    Avec le bout de code que vous me donnez, c'est bien le coût 2015 qui sort.
    En revanche si un article n'a pas de coût 2015, il ne s'affiche pas.
    Hors moi je souhaite avec la base article complète et que s'affiche en colonne s'il y en a un le coût 2015.
    Quel bout de code ? À qui répondez-vous ?

    Je pense que la bonne solution a été donnée par bstevy dans son message #3.
    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 !

  12. #12
    Membre actif
    Inscrit en
    Janvier 2006
    Messages
    1 218
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 218
    Points : 257
    Points
    257
    Par défaut
    Justement de ce bout de code là.
    Il me renvoi les coûts 2015, mais certains articles n'apparaissent plus. Ceux qui n'ont pas encore de coût.

  13. #13
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 912
    Points
    38 912
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par leloup84 Voir le message
    Justement de ce bout de code là.
    Il me renvoi les coûts 2015, mais certains articles n'apparaissent plus. Ceux qui n'ont pas encore de coût.
    voir ma réponse de ce jour à 11h51

  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
    Citation Envoyé par leloup84
    Justement de ce bout de code là.
    Il me renvoi les coûts 2015, mais certains articles n'apparaissent plus. Ceux qui n'ont pas encore de coût.
    Le code posté par bstevy était celui-ci :
    Citation Envoyé par bstevy
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Select A.code, A.libellé, C.coût
    From Article A
    left outer join Coût C on A.code = C.code and C.année = 2015
    Le besoin exprimé dans le premier message était celui-ci :
    Citation Envoyé par leloup84
    Là je veux afficher si la base est renseigné le coût 2015 de chaque article.
    Ceux qui n'ont pas de coût 2015 doivent toujours être affiché.
    Le code donné par bstevy répond au besoin. Tous les articles seront affichés et ceux qui ont un coût en 2015 auront leur coût affiché.

    La proposition d'escartefigue :
    Citation Envoyé par escartefigue
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Select Art.code
          ,Art.année
          ,Cout.cout
    From articles as Art
    Left outer join cout 
      on cout.code = Art.code
    Elle renverra tous les articles avec tous leurs coûts, y compris ceux des autres années que 2015. Selon moi, elle ne répond pas au besoin.
    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 !

  15. #15
    Membre actif
    Inscrit en
    Janvier 2006
    Messages
    1 218
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 218
    Points : 257
    Points
    257
    Par défaut
    Ci-dessous ma requête et les articles qui n'ont pas de coût 2015 n'apparaissent pas, qu'est ce qui bloque ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Select I.ITMREF_0, I.ITMDES1_0, I.STU_0, I.ITMSTA_0, I.TCLCOD_0, I.TSICOD_0, I.TSICOD_1, IM.PHYSTO_0, C.BLOB_0, IT.VLTTOT_0
    From LSN.ITMMASTER I
    INNER JOIN LSN.ITMMVT IM
    ON I.ITMREF_0=IM.ITMREF_0
    LEFT JOIN LSN.CBLOB C
    ON I.ITMREF_0=C.IDENT1_0
    LEFT OUTER JOIN LSN.ITMCOST IT
    ON I.ITMREF_0=IT.ITMREF_0
    Where IT.YEA_0=2015

  16. #16
    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
    Oui, c'est normal ! Vous avez fait des jointures internes INNER JOIN au lieu de jointures externes LEFT OUTER JOIN !

    Relisez l'article de SQLPro dont le lien vous a été donné plus haut et, pendant que vos y êtes, lisez aussi mon article sur les conditions de restriction et les jointures externes.
    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 !

  17. #17
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 912
    Points
    38 912
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par leloup84 Voir le message
    Bonjour,

    Là je veux afficher si la base est renseigné le coût 2015 de chaque article.
    Ceux qui n'ont pas de coût 2015 doivent toujours être affiché.
    Comment faire ?

    Cordialement.


    Citation Envoyé par CinePhil Voir le message
    La proposition d'escartefigue :
    Elle renverra tous les articles avec tous leurs coûts, y compris ceux des autres années que 2015. Selon moi, elle ne répond pas au besoin.
    C'est exactement ce qui est demandé voir plus haut

  18. #18
    Membre éclairé Avatar de bstevy
    Homme Profil pro
    Solutions Architect
    Inscrit en
    Mai 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Japon

    Informations professionnelles :
    Activité : Solutions Architect
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 552
    Points : 870
    Points
    870
    Par défaut
    on demande que les articles soient affichés, par leur couts... seul le cout 2015 doit etre affiché de ce que je comprends moi ... autrement dit, les articles n'ayant pas de cout pour 2015 doivent avoir un cout null !

  19. #19
    Membre actif
    Inscrit en
    Janvier 2006
    Messages
    1 218
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 218
    Points : 257
    Points
    257
    Par défaut
    Je ne comprends pas CinePhil.
    Pour moi les jointures sont comme demandés.
    J'ai du inner join mais c'est normal là il y a bien des données dans les deux tables.
    Et le left join entre ITMMASTER (table des articles) et ITMCOST (table des couts)
    Pour autant les articles sans coût ne sortent pas avec cette requête.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Select I.ITMREF_0, I.ITMDES1_0, I.STU_0, I.ITMSTA_0, I.TCLCOD_0, I.TSICOD_0, I.TSICOD_1, IM.PHYSTO_0, C.BLOB_0, IT.VLTTOT_0
    From LSN.ITMMASTER I
    INNER JOIN LSN.ITMMVT IM
    ON I.ITMREF_0=IM.ITMREF_0
    LEFT OUTER JOIN LSN.CBLOB C
    ON I.ITMREF_0=C.IDENT1_0
    LEFT OUTER JOIN LSN.ITMCOST IT
    ON I.ITMREF_0=IT.ITMREF_0
    Where IT.YEA_0=2015

  20. #20
    Membre expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 563
    Points : 3 404
    Points
    3 404
    Par défaut
    IT.YEA_0=2015 doit être dans le LEFT OUTER JOIN :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    left outer join Coût C on A.code = C.code AND C.année = 2015
    Si tu le met dans la clause WHERE il fait le filtrage sur l'ensemble de la requête et filtre donc que sur les éléments dont IT.YEA_0 est 2015.

Discussions similaires

  1. une requete avec jointure gauche
    Par grochenel dans le forum Requêtes
    Réponses: 6
    Dernier message: 19/05/2011, 20h03
  2. jointure gauche avec fonction max
    Par nicoaix dans le forum Requêtes
    Réponses: 6
    Dernier message: 13/05/2011, 16h35
  3. Difficulté avec une jointure gauche
    Par beegees dans le forum Langage SQL
    Réponses: 2
    Dernier message: 31/12/2009, 10h25
  4. Réponses: 0
    Dernier message: 22/12/2008, 16h25
  5. Réponses: 4
    Dernier message: 29/06/2006, 10h11

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