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

HyperFileSQL Discussion :

SQL OUTER / UNION


Sujet :

HyperFileSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    R&B
    R&B est déconnecté
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2005
    Messages : 571
    Par défaut SQL OUTER / UNION
    Bonjour

    J'ai deux fichier A et B pour lesquels je veux les lignes communes et non communes avec A.DOC="valA" et B.DOC="valB" pour les rubriques A.CLE B.QTE, B.CLE et B.QTE

    Le but étant d'avoir A.CLE, A.QTE,B.CLE, B.QTE avec tantôt un coté ou l'autre vide pour les lignes non communes et la quantité de chaque fichier POUR A.CLE=B.CLE.

    Exemple
    A.DOC;A.CLE;A.QTE
    D1;C1;9
    D1;C2;8
    D1;C3;4

    B.DOC;B.CLE;B.QTE
    D2;C1;10
    D2;C3;4
    D2;C4;8

    J'aimerai obtenir quand on donne A.DOC="D1" et B.DOC="D2" :
    A.CLE;A.QTE;B.CLE;B.QTE
    C1;9;C1;10
    C2;8;null;null
    C3;4;C3;4
    null;null;C4;8


    Nous avons testé en vain les clause FULL OUTER JOIN ou UNION comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT 
      A.CLE AS A_CLE,  
      A.QTE AS A_QTE,  
      B.CLE AS B_CLE,  
      B.QTE AS B_QTE
    FROM 
      A FULL OUTER JOIN B ON B.CLE  =  A.CLE
    WHERE 
      (
      A.DOC = 'D1'
      AND  B.DOC = 'D2'
    )
    -> on obtient :
    A.CLE;A.QTE;B.CLE;B.QTE
    C1;9;C1;10
    C3;4;C3;4

    Avec union on a fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT A.CLE,  A.QTE FROM A WHERE A.DOC = 'D1'
    UNION
    SELECT B.CLE,  B.QTE FROM B WHERE B.DOC = 'D2'
    -> on obtient :
    CLE;QTE
    C1;10
    C2;8
    C3;4
    C4;8

    Là il nous manque les quantité ou une colonne 'vide' dans chaque requête.
    Merci d'avance.

  2. #2
    Membre très actif Avatar de miripesage
    Homme Profil pro
    gerant
    Inscrit en
    Novembre 2009
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : gerant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 725
    Par défaut
    Bonjour, si le moteur supporte l'UNION JOIN :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT A.CLE,  A.QTE FROM A WHERE A.DOC = 'D1'
    UNION JOIN
    SELECT B.CLE,  B.QTE FROM B WHERE B.DOC = 'D2'

  3. #3
    Membre chevronné
    Homme Profil pro
    Consultant
    Inscrit en
    Octobre 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 254
    Par défaut
    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
     
    SELECT 
     *
    FROM 
      A LEFT OUTER JOIN (SELECT * FROM B WHERE B.DOC = 'D2') ON A.CLE  =  B.CLE
    WHERE 
      A.DOC = 'D1'
     
    UNION
     
    SELECT 
     *
    FROM 
      B LEFT OUTER JOIN (SELECT * FROM A WHERE A.DOC = 'D1') ON B.CLE  =  A.CLE
    WHERE 
    B.DOC = 'D2'
    Obligé de faire des sous-requete car HF ne sait pas gérer les conditions dans la clause ON qui porte sur la table externe (bug signalé depuis la version 14, réglé en v16 en C/S mais pas en HF Classic).

    Citation Envoyé par R&B Voir le message
    Bonjour

    J'ai deux fichier A et B pour lesquels je veux les lignes communes et non communes avec A.DOC="valA" et B.DOC="valB" pour les rubriques A.CLE B.QTE, B.CLE et B.QTE

    Le but étant d'avoir A.CLE, A.QTE,B.CLE, B.QTE avec tantôt un coté ou l'autre vide pour les lignes non communes et la quantité de chaque fichier POUR A.CLE=B.CLE.

    Exemple
    A.DOC;A.CLE;A.QTE
    D1;C1;9
    D1;C2;8
    D1;C3;4

    B.DOC;B.CLE;B.QTE
    D2;C1;10
    D2;C3;4
    D2;C4;8

    J'aimerai obtenir quand on donne A.DOC="D1" et B.DOC="D2" :
    A.CLE;A.QTE;B.CLE;B.QTE
    C1;9;C1;10
    C2;8;null;null
    C3;4;C3;4
    null;null;C4;8


    Nous avons testé en vain les clause FULL OUTER JOIN ou UNION comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT 
      A.CLE AS A_CLE,  
      A.QTE AS A_QTE,  
      B.CLE AS B_CLE,  
      B.QTE AS B_QTE
    FROM 
      A FULL OUTER JOIN B ON B.CLE  =  A.CLE
    WHERE 
      (
      A.DOC = 'D1'
      AND  B.DOC = 'D2'
    )
    -> on obtient :
    A.CLE;A.QTE;B.CLE;B.QTE
    C1;9;C1;10
    C3;4;C3;4

    Avec union on a fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT A.CLE,  A.QTE FROM A WHERE A.DOC = 'D1'
    UNION
    SELECT B.CLE,  B.QTE FROM B WHERE B.DOC = 'D2'
    -> on obtient :
    CLE;QTE
    C1;10
    C2;8
    C3;4
    C4;8

    Là il nous manque les quantité ou une colonne 'vide' dans chaque requête.
    Merci d'avance.

Discussions similaires

  1. compter enregistrement dans une requete sql avec UNION
    Par dbzzzde dans le forum VBA Access
    Réponses: 2
    Dernier message: 24/10/2007, 10h43
  2. Requête SQL avec UNION, sum et GROUP BY
    Par Guitariff dans le forum Langage SQL
    Réponses: 6
    Dernier message: 03/12/2006, 13h48
  3. [SQL] Optimisation union , distinct
    Par raj dans le forum Oracle
    Réponses: 5
    Dernier message: 18/05/2006, 10h17
  4. [SQL] Outer join récalcitrant
    Par Nico57 dans le forum Oracle
    Réponses: 7
    Dernier message: 10/05/2006, 09h57
  5. pb the requête sql clause UNION
    Par new_wave dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 07/11/2005, 13h38

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