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 :

2 requêtes => 1


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2009
    Messages : 132
    Points : 70
    Points
    70
    Par défaut 2 requêtes => 1
    Bonjour,

    J'ai une table comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CODE ARTICLE|CODE LANGUE|DESCRIPTION
    Je fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT 
     
    	a.C_ARTIC AS code,
    	MAX(dlg.DESI_LANG) AS designation_longue_FR 
     
    FROM ARTIC a 
     
    FULL OUTER JOIN DESLG dlg 
    	ON dlg.T_ARTIC = a.T_ARTIC  	
     
    WHERE dlg.C_LANGUE = 'FRA'
     
    GROUP BY a.C_ARTIC
    Et ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT 
     
    	a.C_ARTIC AS code,
    	MAX(dlg.DESI_LANG) AS designation_longue_EN 
     
    FROM ARTIC a 
     
    FULL OUTER JOIN DESLG dlg 
    	ON dlg.T_ARTIC = a.T_ARTIC  	
     
    WHERE dlg.C_LANGUE = 'ANG'
     
    GROUP BY a.C_ARTIC
    Je voudrais rassembler les 2 requêtes en 1 mais je bloque...

    (C'est une partie d'une requête bien plus grande c'est pourquoi je souhaite ne faire l'export qu'en une partie, pas en x.)

    Auriez vous une idée pour que je me retrouve avec un tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Code article|Description EN|Description FR
    Merci de votre aide.

  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
    Par défaut
    bonjour,

    je ne comprends pas bien l'utilité du full outer join dans votre cas.


    Ceci étant dit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT a.C_ARTIC AS code,
    MAX(dlg_fr.DESI_LANG) AS designation_longue_FR,
    MAX(dlg_en.DESI_LANG) AS designation_longue_EN
     
    FROM ARTIC a 
    LEFT OUTER JOIN DESLG dlg_fr ON dlg_fr.T_ARTIC = a.T_ARTIC and ddlg_fr.C_LANGUE = 'FRA'
    LEFT OUTER JOIN DESLG dlg_en ON dlg_en.T_ARTIC = a.T_ARTIC and ddlg_en.C_LANGUE = 'ANG'
    GROUP BY a.C_ARTIC

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2009
    Messages : 132
    Points : 70
    Points
    70
    Par défaut
    Ah oui... merci pour la solution.

    Euh le full outer c'est rapport au reste de la requête, j'ai pas tout mis pour ne pas remplir la page inutilement.

    Merci bien en tout cas

  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
    Avec une seule jointure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      SELECT a.C_ARTIC AS code,
             MAX(CASE dlg.C_LANGUE WHEN 'FRA' THEN dlg.DESI_LANG END) AS designation_longue_FR,
             MAX(CASE dlg.C_LANGUE WHEN 'ANG' THEN dlg.DESI_LANG END) AS designation_longue_EN
        FROM ARTIC a 
             LEFT OUTER JOIN DESLG dlg
               ON dlg.T_ARTIC = a.T_ARTIC
              AND dlg.C_LANGUE IN ('FRA', 'ANG')
    GROUP BY a.C_ARTIC;

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2009
    Messages : 132
    Points : 70
    Points
    70
    Par défaut
    Merci à toi aussi!

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

Discussions similaires

  1. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38
  2. Pb requête imbriquée
    Par ddams dans le forum Requêtes
    Réponses: 11
    Dernier message: 20/04/2004, 12h13
  3. Requete requête sous sybase
    Par eddie dans le forum Sybase
    Réponses: 3
    Dernier message: 02/04/2003, 14h51
  4. Requête imbriquée et indexes INTERBASE
    Par vadim dans le forum InterBase
    Réponses: 2
    Dernier message: 06/09/2002, 16h15
  5. [BDD] Enregistrer le résultat d'une requête
    Par Mowgly dans le forum C++Builder
    Réponses: 5
    Dernier message: 19/06/2002, 15h26

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