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 :

sql jointure externe


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    358
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 358
    Points : 117
    Points
    117
    Par défaut sql jointure externe
    bonjour,
    j'ai 2 tables "operation" et "typeoperation".
    dans la table operation, j'ai le champ "typop" qui référence typoperation.

    dans la table operation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ope_id "clé primaire"
    ope_statut "statut"
    typ_top_id "clé étrangère sur la table typ_top_id"
    ope_date_imputation "date imputation"
    table type_operation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    top_id  "clé primaire"
    top_libelle "libellé du type d'opération"
    top_identifiant "libellé de l'identifaitn du type d'opération"
    je fais une requête SQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    select top.top_libelle, ope.ope_statut, count(ope_id)
    from operation ope
    left outer join type_operation top on top.top_id=ope.typ_top_id
    where ope.ope_date_imputation<'30/01/08'
    and ope.ope_statut in ('Validé')
    and top.top_identifiant in ('DSV','DSVB','DSVBL')
    group by top.top_libelle, ope.ope_statut
    order by top.top_libelle ASC;
    J'obtiens cela :
    DC - D Validé 1
    DO - D Validé 15
    Or il y a un libellé "DO - E" dont le nombre est égale à 0 qui n'est pas affiché. J'aimerai pouvoir afficher mais je n'arrive pas. J'ai essayé avec left, mais aussi right et full.

    SGBD : Oracle

    merci d'avance

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 388
    Points
    18 388
    Par défaut
    Lors d'une jointure externe il faut faire remonter toutes les conditions concernant les tables externement jointes dans le prédicat de jointure :
    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
    SELECT
        top.top_libelle,
        ope.ope_statut,
        coalesce(count(ope.ope_id), 0)
    FROM
        type_operation top
        LEFT OUTER JOIN operation ope
          ON ope.typ_top_id = top.top_id
         AND ope.ope_date_imputation < to_date('30/01/2008', 'dd/mm/yyyy')
         AND ope.ope_statut = 'Validé'
    WHERE
        top.top_identifiant IN ('DSV', 'DSVB', 'DSVBL')
    GROUP BY
        top.top_libelle,
        ope.ope_statut
    ORDER BY
        top.top_libelle ASC;
    J'ai également modifié un IN avec un seul paramètre en égalité, et j'ai utilisé un format de date pour votre date.

    Edit : apparement la jointure externe est dans l'autre sens, j'ai modifié ma requête en fonction.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    358
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 358
    Points : 117
    Points
    117
    Par défaut
    c'est bon, ça fonctionne !! merci beaucoup !!!!!!!

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

Discussions similaires

  1. SQL Jointures externes imbriquées
    Par lbar012001 dans le forum SQL
    Réponses: 2
    Dernier message: 10/10/2007, 16h02
  2. [SQL] jointure externe complète
    Par kirgan dans le forum Access
    Réponses: 2
    Dernier message: 15/05/2006, 13h07
  3. [SQL] Jointure externe dans "les 2 sens"
    Par Bounty Killer dans le forum Oracle
    Réponses: 3
    Dernier message: 04/05/2006, 10h56
  4. [SQL] jointure externe
    Par Sniper37 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 02/09/2005, 15h06
  5. [SQL] jointure externe avec 3 tables, comment faire ....
    Par grumbok dans le forum Langage SQL
    Réponses: 2
    Dernier message: 04/08/2005, 16h13

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