Resultat de 2 requetes

Resultat de 2 requetes - SQL/NoSQL - Programmation

Marsh Posté le 04-07-2017 à 14:37:54    

Bonjour,
 
Je souhaite faire une requête qui donne le résultat de 2 requêtes :
J'ai la première requête qui me donne les besoins de matière pour le mois choisi
 
select PARACALC.ValParaAlpha13 'Ref chant',
 
sum(case when PARACALC.ValParaAlpha1 In ('TOTAL') OR PARACALC.ValParaAlpha2 In ('TOTAL') OR PARACALC.ValParaAlpha3 In ('TOTAL') OR PARACALC.ValParaAlpha4 In ('TOTAL') then  
     (PARACALC.ValParaNum1+PARACALC.ValParaNum2)*2/1000 else  
     case when PARACALC.ValParaAlpha1 In ('Chant ALU','Chant PVC') then PARACALC.ValParaNum1/1000 else 0 end +
     case when PARACALC.ValParaAlpha2 In ('Chant ALU','Chant PVC') then PARACALC.ValParaNum1/1000 else 0 end +
     case when PARACALC.ValParaAlpha3 In ('Chant ALU','Chant PVC') then PARACALC.ValParaNum2/1000 else 0 end +
     case when PARACALC.ValParaAlpha4 In ('Chant ALU','Chant PVC') then PARACALC.ValParaNum2/1000 else 0 end
end *1.2) as 'Conso du mois'
from paracalc
join COMC on PARACALC.CodeTableParametre=comc.CodeTableParametre
join COME on comc.NoAccuseRecepto=come.NoAccuseReception
where come.AnneeSouhPlusTard=2017 and datepart(mm,come.DateSouhaiteePlustard)=6 and (PARACALC.ValParaAlpha13 like ('PVC%') or PARACALC.ValParaAlpha13 like ('ABS%'))
group by paracalc.ValParaAlpha13
order by PARACALC.ValParaAlpha13 desc  
 
et j'ai la 2 requête qui me donne le besoin futur :
select PARACALC.ValParaAlpha13 'Ref chant'
,sum(case when PARACALC.ValParaAlpha1 In ('TOTAL') OR PARACALC.ValParaAlpha2 In ('TOTAL') OR PARACALC.ValParaAlpha3 In ('TOTAL') OR PARACALC.ValParaAlpha4 In ('TOTAL') then  
     (PARACALC.ValParaNum1+PARACALC.ValParaNum2)*2/1000 else  
     case when PARACALC.ValParaAlpha1 In ('Chant ALU','Chant PVC') then PARACALC.ValParaNum1/1000 else 0 end +
     case when PARACALC.ValParaAlpha2 In ('Chant ALU','Chant PVC') then PARACALC.ValParaNum1/1000 else 0 end +
     case when PARACALC.ValParaAlpha3 In ('Chant ALU','Chant PVC') then PARACALC.ValParaNum2/1000 else 0 end +
     case when PARACALC.ValParaAlpha4 In ('Chant ALU','Chant PVC') then PARACALC.ValParaNum2/1000 else 0 end
end *1.2) 'Besoin'
from paracalc
join COMC on PARACALC.CodeTableParametre=comc.CodeTableParametre
join COME on comc.NoAccuseRecepto=come.NoAccuseReception
where come.AnneeSouhPlusTard=2017 and datepart(mm,come.DateSouhaiteePlustard)>6 and (PARACALC.ValParaAlpha13 like ('PVC%') or PARACALC.ValParaAlpha13 like ('ABS%'))
group by paracalc.ValParaAlpha13,COME.AnneeSouhPlusTard
order by PARACALC.ValParaAlpha13 desc
 
Le problème est que je ne sais pas comment réunir les 2 requêtes pour avoir un résultat du type :
Ref chant     Conso du mois     Besoin
Chant 1         10                      20
chant 2                                  15
chant 3          5                       0
 
Si quelqu'un peux m'aider  
Merci.

Reply

Marsh Posté le 04-07-2017 à 14:37:54   

Reply

Marsh Posté le 04-07-2017 à 15:24:04    

Tu fais une requête qui, dans son FROM, contient tes 2 sous-requêtes et tu fais la jointure sur le champ qui va bien ("Ref chant" apparemment).


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 08-07-2017 à 12:16:10    

Désole ça ne fait pas très longtemps que je fait du sel et je ne comprend pas ta réponse

Reply

Marsh Posté le 08-07-2017 à 18:44:32    

Dans la clause from, tu mets tes 2 sous requêtes :
SELECT .... FROM (SELECT ... FROM ... WHERE ...) AS sousreq1, (SELECT ... FROM ... WHERE ...) AS sousreq2 WHERE sousreq1.refchant = sousreq2.refchant
 
Bref, un truc du genre.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 09-07-2017 à 08:58:52    

Ok merci je test lundi

Reply

Marsh Posté le 10-07-2017 à 11:14:24    

MERCI ça marche nickel

Reply

Marsh Posté le 10-07-2017 à 11:36:58    

Bien content pour toi ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed