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

MS SQL Server Discussion :

Besoin d'aide a propos d'une requete


Sujet :

MS SQL Server

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 6
    Par défaut Besoin d'aide a propos d'une requete
    bonjour,
    j'ai deux tables articles et commandes
    je veux créer une requête afin de sélectionner tous les articles et la quantité commandé d'un jour, si aucune quantité commandé dans le jour donné je veux qu'il me renvoit une valeur null.
    merci d'avance.

  2. #2
    Membre Expert Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Par défaut
    Et en lisant la charte pour nous donner les DDL de vos tables ainsi qu'un jeu de données pour que l'on puisse vous aider.

    Merci.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 6
    Par défaut
    Articles (code_article,nom_article,prix ...)
    commandes (num_commande,date_cmd, code_article, qte_cmd)

    je veux lister tous les articles (code_article,nom_article) et qte_cmd
    avec condition de date_cmd

    exemple
    code_article | nom_article | prix
    ---------------------------------
    1 | article1 | 2
    2 | article2 | 5
    3 | article3 | 4

    num_cmd | date_cmd | code_article | qte_cmd
    ---------------------------------------------------
    1 | 06/02/2011 | 1 | 10
    1 | 06/02/2011 | 3 | 6
    1 | 07/02/2011 | 1 | 5
    1 | 07/02/2011 | 2 | 6

    si je veux les commandes du jour 07/02/2011 il faut me donner

    code_article | nom_article | date_cmd | qte_cmd
    ---------------------------------
    1 | article1 | 07/02/2011 | 5
    2 | article2 | 07/02/2011 | 6
    3 | article3 | 07/02/2011 | 0

  4. #4
    Membre Expert Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Par défaut
    Essayez quelque chose comme cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    select 
    art.code_article, MAX(art.nom_article) as nom_article
    cm.date_cmd, SUM(qte_cmd) as qte_cmd
    FROM
    articles art
    LEFT OUTER JOIN commandes cm
    ON cm.code_article = art.code_article
     
    where 
    cm.date_cmd = 20110207
     
    GROUP BY
    art.code_article, cm.date_cmd
    A voir si les article sans commende à une date sortent bien.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Novembre 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 6
    Par défaut
    ca marche pas, il me donne juste les articles ayant des commandes dans ce jour.
    merci

  6. #6
    Membre Expert Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Par défaut
    C'est normal. il cherche à grouper selon des dates, qui ne sont présente que sur la table des commandes.
    On pourrait le forcer de manière pas très propre, mais mieux, avez vous une table de dates ?

  7. #7
    Nouveau membre du Club
    Inscrit en
    Novembre 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 6
    Par défaut
    non, même si je supprime la clause group by
    le probleme persiste.
    merci

  8. #8
    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
    Essayez ainsi :
    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
    24
    25
    26
    27
    28
    ;With Articles (code_article, nom_article, prix) as
    (
    select 1, 'article1', 2 union all
    select 2, 'article2', 5 union all
    select 3, 'article3', 4
    )
      ,  Commandes (num_commande, date_cmd, code_article, qte_cmd) as
    (
    select 1, '06/02/2011', 1, 10 union all
    select 1, '06/02/2011', 3,  6 union all
    select 1, '07/02/2011', 1,  5 union all
    select 1, '07/02/2011', 2,  6
    )
    select art.code_article                    ,
           art.nom_article                     ,
           sel.dte                  as date_cmd,
           coalesce(cmd.qte_cmd, 0) as qte_cmd
      from Articles as art
           cross join (select '07/02/2011' as dte) as sel
           left outer join Commandes as cmd
             on cmd.code_article = art.code_article
            and cmd.date_cmd     = sel.dte
     
    code_article nom_article date_cmd   qte_cmd
    ------------ ----------- ---------- -----------
    1            article1    07/02/2011 5
    2            article2    07/02/2011 6
    3            article3    07/02/2011 0

  9. #9
    Membre Expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Par défaut Plus simple
    Bonjour à tous.
    Je pense qu'il y a beaucoup plus simple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    SELECT 
     art.code_article
    , art.nom_article
    ,ISNULL((SELECT SUM(qte_cmd) 
      FROM commandes cm
      WHERE cm.code_article = art.code_article
    	AND cm.date_cmd = 20110207),0) as qte_cmd
    FROM
    articles art

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/07/2009, 22h36
  2. Réponses: 0
    Dernier message: 02/04/2008, 20h29
  3. Petit conseil à propos d'une requete sql
    Par viny dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 02/08/2007, 15h37
  4. Réponses: 3
    Dernier message: 10/12/2005, 11h06
  5. Petite question à propos d'une requete
    Par ViBy dans le forum Langage SQL
    Réponses: 4
    Dernier message: 15/09/2004, 12h21

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