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 :

problème syntaxe sur sous requetes


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 99
    Par défaut problème syntaxe sur sous requetes
    bonjour à tous,

    j'ai les deux tables suivantes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    table "personne" :
     
    nom         tarif1       raisontarif1       tarif2       raisontarif2
    ------------------------------------------------------------------------
    albert      20.50           1                 12.00         3
    bernard     15.00           2                 13.60         2
    charles     14.20           2                 85.00         1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    table "raison_remise" :
     
    numero            designation
    -------------------------------------
    1                  gratuité
    2                  promo mars
    3                  promo septembre
    4                  solde
    je souhaite, via une requête, faire une correspondance entre la désignation et les champs raisontarif1 et raisontarif2 et obtenir le résultat suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    resultat requete :
     
    nom       tarif1    designation1       tarif2       designation2
    ------------------------------------------------------------------------
    albert    20.50       gratuité           12.00         promo septembre
    bernard   15.00       promo mars         13.60         promo mars
    charles   14.20       promo mars         85.00         gratuité
    je pensais faire deux sous requêtes mais impossible d'obtenir le résultat escompté. pour info, je travaille sous sql server 2000.

    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
    23
     
    SELECT personne.nom,
         personne.tarif1, raison_remise.designation as designation1,
         personne.tarif2, raison_remise.designation as designation2
    FROM personne, raison_remise
    WHERE
     (
     designation1 In
        (
        SELECT designation
        FROM raison_remise
        WHERE raison_remise.numero=personne.raisontarif1
        )
     )
    AND
     (
     designation2 In
        (
        SELECT designation
        FROM raison_remise
        WHERE raison_remise.numero = personne.raisontarif2
        )
     )

    si quelqu'un a une réponse à me donner... merci beaucoup.


  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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 454
    Par défaut
    Pas besoin de sous-requête, vous n'avez besoin que de deux jointures :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT per.nom,
           per.tarif1, rr1.designation AS designation1,
           per.tarif2, rr2.designation AS designation2
      FROM personne as per
           inner join raison_remise as rr1
             on rr1.numero = per.raisontarif1
           inner join raison_remise as rr2
             on rr2.numero = per.raisontarif2;
    Si vous avez des personnes sans raisontarif, il faudra changer ces jointures en jointures externes.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 99
    Par défaut
    c'est parfait !!!! pourquoi faire compliqué quand on peut simplifier les choses... je me noyais dans mes sous requêtes sans trouver de solution...

    merci beaucoup pour votre efficacité.

    bonne soirée.


    delaio.

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

Discussions similaires

  1. erreur de syntaxe sur la requete iif sous sql access
    Par nadia123456 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 29/08/2008, 15h32
  2. Erreur de syntaxe sur une Requete Update
    Par samtheh dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 01/06/2007, 13h07
  3. LEFT JOIN sur sous requete
    Par passie dans le forum Langage SQL
    Réponses: 4
    Dernier message: 16/06/2006, 12h51
  4. problème update avec sous requetes
    Par stoz dans le forum Langage SQL
    Réponses: 6
    Dernier message: 12/10/2005, 16h44
  5. Problème de perfs Sous requetes IN
    Par ias83 dans le forum SQL
    Réponses: 4
    Dernier message: 15/06/2005, 12h39

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