Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1971 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  aide pour une requete svp

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

aide pour une requete svp

n°993468
hep8
Posté le 25-02-2005 à 14:20:27  profilanswer
 

J'ai besoin d'aide pour ne faire qu'une seul requete des deux suivante. Voici mon objectif et les info necessaire, j en ai p-e oublié mais demander les moi!
 
Pour une firme donnée, a une periode donnée (ici firm 2 periode 200501)
donner par numero, l'index, le montant total, et le montant a soustraire.
 
la table 'Total' contient des enregistrements d'achats, la deuxieme, 'Retirer', contient les achats qui ont ete refusé.
 
la premiere requete me permet de retrouvé le montant total des achats
la second permet de retrouver le montant total refusé
 
 
Mais comment n'en faire qu'une seul?
 
(type = type d'enregistrement, pour plusieur type 'detail', correspondent des 'SousTotal', pour le total, faut additionner soit les un, soit les autres...
Il y a donc plusieur numero fixe par firme et un index par numero par periode
travail sous sqlserver, et la requete est a glisser dans du code c#
si il vous faut plus d'info...)
 
 
SELECT     Numero AS Numero, id1 + id2 AS index, SUM(Somme) AS montant
FROM         Total T1
WHERE     (Firme = 2) AND (type = 'SousTotal') AND (periode = 200501)
GROUP BY Numero, id1 + id2
 
Numero index              montant
35        050123500013 196,800000190735
32        050123200020 723,910004138947
28        050122800094 252891,239608841
06        050120600016 135,199998244643
16        050121600025 371,180003643036
26        050122600034 18447,18978706
30        050123000057 119537,17980618
 
 
 
+
 
SELECT     SUM(a.Somme) AS montantRetirer, a.Numero AS Numero
FROM         Total a INNER JOIN
                      Retirer b ON a.ligneH * 10 + a.ligneB = b.ligne AND a.Firme = b.Firme AND a.periode = b.periode AND b.type = 40
WHERE     (a.Firme = 2) AND (a.periode = 200501) AND (a.type = 'detail')
GROUP BY a.Numero
 
montantRetirer       Numero
318,890000343323 26
3626,94997048378 28
1606,89999461174 30
44,0499992370605 32
 
 
 
=       -----------------------------------
ce que je voudrais:  
 
Numero index              montant               montantRetirer
35       050123500013 196,800000190735  0
32       050123200020 723,910004138947  44,0499992370605
28       050122800094 252891,239608841  3626,94997048378
06       050120600016 135,199998244643  0
16       050121600025 371,180003643036  0
26       050122600034 18447,18978706     318,890000343323
30       050123000057 119537,17980618   1606,89999461174
 
Merci d'avance !

mood
Publicité
Posté le 25-02-2005 à 14:20:27  profilanswer
 

n°993481
hep8
Posté le 25-02-2005 à 14:28:32  profilanswer
 

et voila une infos deja, ligneH+ligneB et ligne permettent de lier les enregistrement des table pour pouvoir retrouver le prix de l'achat refusé.
donc un enreg. de la table Retirer correspond toujours a un enreg. de la table Total dans laquel se trouve les prix.
 
olala ca va etre dur...

n°993510
Beegee
Posté le 25-02-2005 à 14:51:24  profilanswer
 

Quel SGBD ?
 
Tu veux qu'on te fasse tout ton exo ou quoi ?
 
J'ai pas trop compris ton 2ème message ...
 
Si le SGBD permet les sous requêtes c'est trivial.
Il suffit de faire une jointure externe entre la 1ère requête et la seconde (jointure externe car la seconde requête ne renvoie pas forcément d'infos pour chaque numéro). La jointure se fait bien sur sur le numéro, élément commun des 2 requêtes.

n°993527
Yonel
Monde de merde !
Posté le 25-02-2005 à 15:01:33  profilanswer
 

Beegee a écrit :

Quel SGBD ?
Il suffit de faire une jointure externe entre la 1ère requête et la seconde (jointure externe car la seconde requête ne renvoie pas forcément d'infos pour chaque numéro). La jointure se fait bien sur sur le numéro, élément commun des 2 requêtes.


 
ouep l'idée ce serait un truc dans ce goût là. Il suffirait d'utiliser un LEFT JOIN sous SQL Server pour rejoindre les tables même si il n'y pas de montantRetirer pour certains numéros. Tu vas te retrouver avec un truc du genre :
 
Numero index              montant               montantRetirer
35       050123500013 196,800000190735  NULL
32       050123200020 723,910004138947  44,0499992370605
28       050122800094 252891,239608841  3626,94997048378
06       050120600016 135,199998244643  NULL
16       050121600025 371,180003643036  NULL
26       050122600034 18447,18978706     318,890000343323
30       050123000057 119537,17980618   1606,89999461174  
 
Ensuite il faudrait utiliser la fonction coalesce qui te retourne le premier élément non null dans une liste : coalesce(SUM(a.Somme),0) As montantRetirer .
 
Voilà l'idée générale c'est ça après c'est évidemment difficile à écrire quand on ne connait pas bien le contenu des tables et la structure de la base. Mais pour toi hep8 ce sera du gâteau :D .

n°993536
hep8
Posté le 25-02-2005 à 15:05:38  profilanswer
 

sgbd : sqlserver
 
exo : ??? c quoi ca?
 
2eme msg : juste pour expliqué a quoi servent les champs ligne, c'est grace a eux qu'on peut savoir le prix de l'achat qui est mentioné dans 'Retirer' et donc faire la colonne 'montantRetire'.
 
Je vais voir ca pour la jointure externe, c'est p-e ce qu'il me faut, et ca oriente mes recherches. Merci de ta reponse!

n°993539
hep8
Posté le 25-02-2005 à 15:07:33  profilanswer
 

merci aussi Yonel je vais voir c que je peux faire de tous ca  
 :hello:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  aide pour une requete svp

 

Sujets relatifs
Besoin d'aide requête MySQLpetite aide SQL requete imbriqué
aide requete sql pb syntaxe[Mysql] Aide à la redaction d'une requete.
[SBBD] Aide pour faire une requête[SQL] aide pour la création d une requete
[résolu] aide sur une requete sql toute conne[MySQL] Aide sur une requète
Aide pour l'écriture d'une requete SQLsql requete aide please
Plus de sujets relatifs à : aide pour une requete svp


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR