Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/02/2011, 16h29   #1
Invité de passage
 
Med LAATITO
Inscription : novembre 2010
Messages : 6
Détails du profil
Informations personnelles :
Nom : Med LAATITO

Informations forums :
Inscription : novembre 2010
Messages : 6
Points : 0
Points : 0
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.
laatito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 16h41   #2
Modérateur
 
Avatar de Jinroh77
 
Homme Alexandre Chemla
Consultant en Business Intelligence
Inscription : février 2006
Messages : 1 770
Détails du profil
Informations personnelles :
Nom : Homme Alexandre Chemla
Âge : 28
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : février 2006
Messages : 1 770
Points : 1 833
Points : 1 833
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.
Jinroh77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 16h56   #3
Invité de passage
 
Med LAATITO
Inscription : novembre 2010
Messages : 6
Détails du profil
Informations personnelles :
Nom : Med LAATITO

Informations forums :
Inscription : novembre 2010
Messages : 6
Points : 0
Points : 0
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
laatito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 17h10   #4
Modérateur
 
Avatar de Jinroh77
 
Homme Alexandre Chemla
Consultant en Business Intelligence
Inscription : février 2006
Messages : 1 770
Détails du profil
Informations personnelles :
Nom : Homme Alexandre Chemla
Âge : 28
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : février 2006
Messages : 1 770
Points : 1 833
Points : 1 833
Essayez quelque chose comme cela
Code :
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.
Jinroh77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 17h33   #5
Invité de passage
 
Med LAATITO
Inscription : novembre 2010
Messages : 6
Détails du profil
Informations personnelles :
Nom : Med LAATITO

Informations forums :
Inscription : novembre 2010
Messages : 6
Points : 0
Points : 0
ca marche pas, il me donne juste les articles ayant des commandes dans ce jour.
merci
laatito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 17h43   #6
Modérateur
 
Avatar de Jinroh77
 
Homme Alexandre Chemla
Consultant en Business Intelligence
Inscription : février 2006
Messages : 1 770
Détails du profil
Informations personnelles :
Nom : Homme Alexandre Chemla
Âge : 28
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : février 2006
Messages : 1 770
Points : 1 833
Points : 1 833
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 ?
Jinroh77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 17h47   #7
Invité de passage
 
Med LAATITO
Inscription : novembre 2010
Messages : 6
Détails du profil
Informations personnelles :
Nom : Med LAATITO

Informations forums :
Inscription : novembre 2010
Messages : 6
Points : 0
Points : 0
non, même si je supprime la clause group by
le probleme persiste.
merci
laatito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 18h11   #8
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 459
Points : 10 459
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Essayez ainsi :
Code :
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
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 12h01   #9
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
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 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
Par défaut Plus simple

Bonjour à tous.
Je pense qu'il y a beaucoup plus simple:

Code :
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
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h37.


 
 
 
 
Partenaires

Hébergement Web