OVH Cloud OVH Cloud

Aux spécialistes SQL

3 réponses
Avatar
I.G.LOG
J'essai de lire les articles pour lesquels il y a une livraison OU une
sortie de stock dans une période donnée. Je voudrais en même temps avoir le
cumul des entrées et sorties.
Voici la requete:

select ARTICLE.IDARTICLE,ARTICLE.DESIGNATION, ARTICLE.REFCONST,
count(FOULIVLG.QTE) as TotLiv, count(STOCKSOR.QTE) as TotSor
from ARTICLE left outer join FOULIVLG on (FOULIVLG.IDARTICLE =
ARTICLE.IDARTICLE),
ARTICLE left outer join ARTSTOCK on (ARTSTOCK.IDARTICLE = ARTICLE.IDARTICLE
and ARTSTOCK.IDSTOCK <> 0), FOULIV,STOCKSOR
where FOULIV.IDFOULIV = FOULIVLG.IDFOULIV
and FOULIV.DATE between '20020101' and '20050930'
and STOCKSOR.IDARTSTOCK = ARTSTOCK.IDARTSTOCK
and STOCKSOR.DATE between '20020101' and '20050930'
group by ARTICLE.REFCONST
having TotLiv > 0 or TotSor > 0
order by ARTICLE.REFCONST

J'ai l'impression que ce ne me retourne pas les bonnes valeurs dans TotLiv !
J'ai presque toutes les lignes qui donnent TotLiv = TotSor ?!!!!
Mes essais donnent des résultats identiques sous MySQL et HF classic (hormis
différence de syntaxe)

Est-ce que ca vient du GROUP BY ? De plus les colonnes non comprises dans le
GROUP BY apparaissent à zéro ou blanc ?!

Encore merci

3 réponses

Avatar
Vincent
I.G.LOG a écrit :
J'essai de lire les articles pour lesquels il y a une livraison OU une
sortie de stock dans une période donnée. Je voudrais en même temps avoir le
cumul des entrées et sorties.
Voici la requete:

select ARTICLE.IDARTICLE,ARTICLE.DESIGNATION, ARTICLE.REFCONST,
count(FOULIVLG.QTE) as TotLiv, count(STOCKSOR.QTE) as TotSor
from ARTICLE left outer join FOULIVLG on (FOULIVLG.IDARTICLE > ARTICLE.IDARTICLE),
ARTICLE left outer join ARTSTOCK on (ARTSTOCK.IDARTICLE = ARTICLE.IDARTICLE
and ARTSTOCK.IDSTOCK <> 0), FOULIV,STOCKSOR
where FOULIV.IDFOULIV = FOULIVLG.IDFOULIV
and FOULIV.DATE between '20020101' and '20050930'
and STOCKSOR.IDARTSTOCK = ARTSTOCK.IDARTSTOCK
and STOCKSOR.DATE between '20020101' and '20050930'
group by ARTICLE.REFCONST
having TotLiv > 0 or TotSor > 0
order by ARTICLE.REFCONST

J'ai l'impression que ce ne me retourne pas les bonnes valeurs dans TotLiv !
J'ai presque toutes les lignes qui donnent TotLiv = TotSor ?!!!!
Mes essais donnent des résultats identiques sous MySQL et HF classic (hormis
différence de syntaxe)

Est-ce que ca vient du GROUP BY ? De plus les colonnes non comprises dans le
GROUP BY apparaissent à zéro ou blanc ?!

Encore merci




Si je ne me trompe pas, count(FOULIVLG.QTE) te donne le nombre d'enrg ou
la valeur de FOULIVLG.QTE n'est pas null et non la somme des quantités.

Essaie SUM(...)

Vincent.
Avatar
Ronando
tous les champs que tu mets dans la clause SELECT doivent etre aussi
dans la clause GROUP BY (sauf les operations sur les champs style SUM()
COUNT() etc..)
Avatar
I.G.LOG
> Si je ne me trompe pas, count(FOULIVLG.QTE) te donne le nombre d'enrg ou
la valeur de FOULIVLG.QTE n'est pas null et non la somme des quantités.

Essaie SUM(...)

Vincent.



En effet, c'est bien SUM() qu'il faut utiliser pour avoir la quantité totale
!
Je continue mes essais et te tiens au courrant des résultats.
Merci Vincent