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 :

parametre dans une sous requete


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 6
    Points : 6
    Points
    6
    Par défaut parametre dans une sous requete
    bonjour,

    j'ai une table ayant pour clé composite: SALES_REGION, ANNEE
    de la forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SALES_REGION, ANNEE, MONTANT
    APS,2008,10
    APS,2009,20
    NAP,2008,20
    je voudrais faire une requête qui m'affiche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SALES_REGION | 2008 | 2009
    APS                |10     | 20
    NAP                | 20    | 0
    pour l'instant, j'ai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select SALES_REGION AS SR,(select MONTANT
    from  matable where ANNEE='2008' and SALES_REGION=SR),
    (select MONTANT
    from  matable where ANNEE='2009' and SALES_REGION=SR)
    from matable
    mais il ne connait pas 'SR'.

    Comment passer la région en paramètre dans les sous-requete, ou comment contourner le problème? peut-être sans passer par les sous-requètes

  2. #2
    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
    Ce que tu cherches à faire est de la cosmétique et n'est pas le boulot de SQL mais celui du langage de programmation du logiciel qui utilise la base de données.
    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 !

  3. #3
    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
    Vive la cosmétique !

    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
    With MaTable (SALES_REGION, ANNEE, MONTANT)
    AS
    (
    select 'APS', 2008, 10 union all
    select 'APS', 2009, 20 union all
    select 'NAP', 2008, 20
    )
      select SALES_REGION,
             sum(case annee when 2008 then MONTANT else 0 end) as [2008],
             sum(case annee when 2009 then MONTANT else 0 end) as [2009]
        from MaTable
    group by SALES_REGION;
     
    SALES_REGION 2008        2009
    ------------ ----------- -----------
    APS          10          20
    NAP          20          0

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 801
    Points
    30 801
    Par défaut
    Tu as plusieurs manières de répondre à cette question, qui a déjà été posée de nombreuses fois sur ce forum :
    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  COALESCE(t1.sales_region, t2.sales_region)  AS sr
        ,   COALESCE(t1.montant, 0) AS total_2008
        ,   COALESCE(t2.montant, 0) AS total_20089
    FROM    (   SELECT  sales_region
                    ,   SUM(montant)    AS montant
                FROM    matable
                WHERE   annee = 2008
                GROUP BY sales_region
            )   AS t1
        FULL OUTER JOIN
           (   SELECT  sales_region
                    ,   SUM(montant)    AS montant
                FROM    matable
                WHERE   annee = 2009
                GROUP BY sales_region
            )   AS t2
            ON  t1.sales_region = t2.sales_region
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT  sales_region    AS sr
        ,   SUM(CASE WHEN annee = 2008 THEN montant ELSE 0 END) AS total_2008
        ,   SUM(CASE WHEN annee = 2009 THEN montant ELSE 0 END) AS total_2009
    FROM    matable
    GROUP BY sales_region
    [EDIT] Grilled
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Futur Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Et désolé pour l'oubli des balises [CODE]

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 22/01/2010, 02h51
  2. comment je peux passer un parametre a une sous requete
    Par boulhous dans le forum Requêtes
    Réponses: 5
    Dernier message: 20/01/2010, 11h10
  3. Réponses: 12
    Dernier message: 01/10/2009, 15h30
  4. 'Limit' ne marche pas dans une sous requete !?
    Par walou dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/09/2007, 13h06
  5. Réponses: 13
    Dernier message: 27/08/2007, 12h16

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