Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

SQL

16 réponses
Avatar
I.G.LOG
Bonsoir à tous.
Je suis toujours dans mes requetes SQL et je pietine !

Je voudrais recuperer toutes les lignes de commandes fournisseurs qui ne
sont pas soldées.

J'ai les tables suivantes
FOUCOM (entete commande fournisseur)
F4CLEUNIK (entier)
TERMINE (booleen) (commande soldée ou pas)

FOUCOMLG (lignes de commande)
F15CLEUNIK (entier)
F4CLEUNIK (identifiant commande)
QTE (reel) (qté commandée)

FOULIVCD (lignes d'une reception fournisseur)
F5CLEUNIK (entire: pointeur sur ligne commande)
F1CLEUNIK (identifiant B.L. fournisseur)
QTE (reel) (qté recue)


Et ma requete:

select F4.F4CLEUNIK, F4.DATE, F.RAISON, L.F5CLEUNIK, L.QTE
from FOUCOM F4, FOUCOMLG L
where (F4.TERMINE = 0)
and (L.F4CLEUNIK = F4.F4CLEUNIK)
having (L.QTE > (select sum(R.QTE) from FOULIVCD R where R.F5CLEUNIK =
L.F5CLEUNIK))

qui me retourne toutes les lignes de commandes meme si la quantite est
totalement recue ????
J'ai essayé avec des GROUP BY mais sans plus de succès ?!

Merci à tous pour vos conseils

6 réponses

1 2
Avatar
I.G.LOG
Le mot USING n'est pas reconnu par WD8. Voici donc votre requete modifiée:

select FOUCOM .F4CLEUNIK, FOUCOM .DATE, FOUCOM .RAISON,
FOUCOMLG .F5CLEUNIK, FOUCOMLG .QTE
from FOUCOM FOUCOM left outer join FOUCOMLG F1 on (F1.F4CLEUNIK FOUCOM.F4CLEUNIK),
FOUCOMLG FOUCOMLG left outer join FOULIVCD FOULIVCD on (FOULIVCD.F5CLEUNIK
= FOUCOMLG .F5CLEUNIK)
where FOUCOM.TERMINE = 0
group by FOULIVCD.F5CLEUNIK
having FOUCOMLG.QTE > sum(FOULIVCD.QTE)

et là j'ai une erreur grave à l'exécution dans WD80SQL.DLL !!! (j'avais déjà
eu ce problème que j'ai communiqué au ST, sans réponse à ce jour)

"Firetox" a écrit dans le message de
news:c5isrf$51d$
"I.G.LOG" a écrit dans le message de news:
c5irim$2mc$
> Oui, chaque ligne de commande peut avoir plusieurs reception fournisseur
> (livraison en plusieurs BL)
>
> La requete suivante ne donne rien:
>
> select FOUCOM.F4CLEUNIK, FOUCOM.DATE, FOUCOMLG.F5CLEUNIK, FOUCOMLG.QTE
> from FOUCOM FOUCOM, FOUCOMLG FOUCOMLG, FOULIVCD FOULIVCD
> where FOUCOM.TERMINE = 0
> and FOUCOMLG.F4CLEUNIK = FOUCOM.F4CLEUNIK
> and FOULIVCD.F5CLEUNIK = FOUCOMLG.F5CLEUNIK
> group by FOUCOM.F4CLEUNIK, FOUCOM.DATE, FOUCOMLG.F5CLEUNIK, FOUCOMLG.QTE
> having FOUCOMLG.QTE > SUM(FOULIVCD.QTE)

on a ici des jointures fermees donc n'apparaitront pas les commandes qui
n'ont pas ete livrees
(car pas de ligne dans FOULIVCD) c'est pour ca que j'avais utiliser LEFT
JOIN pour avoir egalement les commandes non livrees.

>
> si j'utilise having FOUCOMLG.QTE <= SUM(FOULIVCD.QTE) la requete me
renvoie
> des résultats mais qui correspondent à quoi ?
> (normallement les lignes de commandes qui ont ete livrées - ou plus)
> Je craque sur ce problème qui semble simple pourtant !!!

la requete devrait renvoyer les commandes livrees complemetement ou non ,
mais qui ont deja eu au moins une livraison


>
> PS: ai essayé:
> select FOUCOM.F4CLEUNIK, FOUCOM.DATE, FOUCOMLG.F5CLEUNIK, FOUCOMLG.QTE,
> sum(FOULIVCD.QTE) as QteRecue
> from FOUCOM FOUCOM, FOUCOMLG FOUCOMLG, FOULIVCD FOULIVCD
> where FOUCOM.TERMINE = 0
> and FOUCOMLG.F4CLEUNIK = FOUCOM.F4CLEUNIK
> and FOULIVCD.F5CLEUNIK = FOUCOMLG.F5CLEUNIK
> group by FOUCOM.F4CLEUNIK, FOUCOM.DATE, FOUCOMLG.F5CLEUNIK, FOUCOMLG.QTE
> having FOUCOMLG.QTE > QteRecue
>
> sans plus de succes !
idem precedement la jointure est fermee

que donne la requete que j'ai ecrit
car il faut obsolument un alias sur la table de depart car les parcours


sont
bien differents ?
>
>
> "Firetox" a écrit dans le message de
> news:c5iop7$31c$
> > Petite question
> >
> > une ligne de commande peut faire l'objet de plusieurs ligne de


reception
?
> > essaye d'inversee la condition : having FOUCOMLG.QTE < > SUM(FOULIVCD.QTE)
> > si tu obtient toutes les lignes ca veut dire que la condition n'est


pas
> > bonne
> >
> > sur mon test j'ai une ligne de reception pour une ligne de commande
(donc
> > pas deSUM)
> > et ca fonctionne. maitenant il faut vraiement connaitre la struture de
la
> > base (surtout les cardinalite entre les entite car sinon on va tourner
en
> > rond)
> >
> > bon dev
> > @+
> >
> >
> > "I.G.LOG" a écrit dans le message de news:
> > c5iocl$7m3$
> > > J'ai même essayé plus simplement (puisque le lignes de commande
soldées
> > ont
> > > forcemment des livraisons):
> > >
> > > select FOUCOM .F4CLEUNIK, FOUCOM .DATE, FOUCOM .RAISON,
> > > FOUCOMLG .F5CLEUNIK, FOUCOMLG .QTE
> > > from FOUCOM FOUCOM, FOUCOMLG FOUCOMLG, FOULIVCD FOULIVCD
> > > where FOUCOM.TERMINE = 0
> > > and FOUCOMLG.F4CLEUNIK = FOUCOM.F4CLEUNIK
> > > and FOULIVCD.F5CLEUNIK = FOUCOMLG.F5CLEUNIK
> > > group by FOULIVCD.F5CLEUNIK
> > > having FOUCOMLG.QTE > SUM(FOULIVCD.QTE)
> > >
> > > mais rien n'y fait, la requete ne me renvoie rien. J'ai testé les
> > fichiers,
> > > il y a bien des enregistrements non soldés ?!
> > > NB: fichiers HF 5.5
> > >
> > > "Firetox" a écrit dans le message de
> > > news:c5imab$1qp$
> > > > Bonjour,
> > > >
> > > > avec un alias sur la table des FOUCOM vous pouvez avoir cette
requete
> > > > elle permet un parcous sur les 2 chaine de façon distinct et ne


sont
> > > > regroupe
> > > > que par la jointure des tables FOUCOM qui permet d'avoir la


requete
> > > > cherchée.
> > > >
> > > > SELECT
> > > > FOUCOM .F4CLEUNIK, FOUCOM .DATE, FOUCOM .RAISON,
> > > > FOUCOMLG .F5CLEUNIK, FOUCOMLG .QTE
> > > > FROM
> > > > FOUCOM FA LEFT JOIN FOUCOMLG USING (F4CLEUNIK),
> > > > FOUCOM FB LEFT JOIN FOULIVCD USING (F5CLEUNIK)
> > > >
> > > > WHERE
> > > > FA .F4CLEUNIK = FB.F4CLEUNIK // jointure des 2


alias
> > > > AND FA.TERMINE = 0
> > > >
> > > > GROUP BY FOULIVCD.F5CLEUNIK
> > > >
> > > > HAVING FOUCOMLG .QTE > SUM(FOULIVCD.QTE )
> > > >
> > > >
> > > > Bon dev
> > > > @+
> > > >
> > > > Firetox
> > > >
> > > > "I.G.LOG" a écrit dans le message de news:
> > > > c5h9go$mi3$
> > > > > Bonsoir à tous.
> > > > > Je suis toujours dans mes requetes SQL et je pietine !
> > > > >
> > > > > Je voudrais recuperer toutes les lignes de commandes


fournisseurs
> qui
> > ne
> > > > > sont pas soldées.
> > > > >
> > > > > J'ai les tables suivantes
> > > > > FOUCOM (entete commande fournisseur)
> > > > > F4CLEUNIK (entier)
> > > > > TERMINE (booleen) (commande soldée ou pas)
> > > > >
> > > > > FOUCOMLG (lignes de commande)
> > > > > F15CLEUNIK (entier)
> > > > > F4CLEUNIK (identifiant commande)
> > > > > QTE (reel) (qté commandée)
> > > > >
> > > > > FOULIVCD (lignes d'une reception fournisseur)
> > > > > F5CLEUNIK (entire: pointeur sur ligne commande)
> > > > > F1CLEUNIK (identifiant B.L. fournisseur)
> > > > > QTE (reel) (qté recue)
> > > > >
> > > > >
> > > > > Et ma requete:
> > > > >
> > > > > select F4.F4CLEUNIK, F4.DATE, F.RAISON, L.F5CLEUNIK, L.QTE
> > > > > from FOUCOM F4, FOUCOMLG L
> > > > > where (F4.TERMINE = 0)
> > > > > and (L.F4CLEUNIK = F4.F4CLEUNIK)
> > > > > having (L.QTE > (select sum(R.QTE) from FOULIVCD R where
R.F5CLEUNIK
> > > > > > > L.F5CLEUNIK))
> > > > >
> > > > > qui me retourne toutes les lignes de commandes meme si la


quantite
> est
> > > > > totalement recue ????
> > > > > J'ai essayé avec des GROUP BY mais sans plus de succès ?!
> > > > >
> > > > > Merci à tous pour vos conseils
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>




Avatar
I.G.LOG
Requete qui ne plante pas:

select FOUCOM.F4CLEUNIK, FOUCOM.DATE, FOUCOM.RAISON, FOUCOMLG.F5CLEUNIK,
FOUCOMLG.QTE
from FOUCOM FOUCOM left outer join FOUCOMLG FOUCOMLG on (FOUCOMLG.F4CLEUNIK
= FOUCOM.F4CLEUNIK),
FOUCOMLG FOUCOMLG left outer join FOULIVCD FOULIVCD on (FOULIVCD.F5CLEUNIK
= FOUCOMLG.F5CLEUNIK)
where FOUCOM.TERMINE = 0
group by FOULIVCD.F5CLEUNIK
having FOUCOMLG.QTE > sum(FOULIVCD.QTE)

mais qui ne retourne rien !!!!

"I.G.LOG" a écrit dans le message de
news:c5itn0$uch$
Le mot USING n'est pas reconnu par WD8. Voici donc votre requete modifiée:

select FOUCOM .F4CLEUNIK, FOUCOM .DATE, FOUCOM .RAISON,
FOUCOMLG .F5CLEUNIK, FOUCOMLG .QTE
from FOUCOM FOUCOM left outer join FOUCOMLG F1 on (F1.F4CLEUNIK > FOUCOM.F4CLEUNIK),
FOUCOMLG FOUCOMLG left outer join FOULIVCD FOULIVCD on


(FOULIVCD.F5CLEUNIK
= FOUCOMLG .F5CLEUNIK)
where FOUCOM.TERMINE = 0
group by FOULIVCD.F5CLEUNIK
having FOUCOMLG.QTE > sum(FOULIVCD.QTE)

et là j'ai une erreur grave à l'exécution dans WD80SQL.DLL !!! (j'avais


déjà
eu ce problème que j'ai communiqué au ST, sans réponse à ce jour)

"Firetox" a écrit dans le message de
news:c5isrf$51d$
> "I.G.LOG" a écrit dans le message de news:
> c5irim$2mc$
> > Oui, chaque ligne de commande peut avoir plusieurs reception


fournisseur
> > (livraison en plusieurs BL)
> >
> > La requete suivante ne donne rien:
> >
> > select FOUCOM.F4CLEUNIK, FOUCOM.DATE, FOUCOMLG.F5CLEUNIK, FOUCOMLG.QTE
> > from FOUCOM FOUCOM, FOUCOMLG FOUCOMLG, FOULIVCD FOULIVCD
> > where FOUCOM.TERMINE = 0
> > and FOUCOMLG.F4CLEUNIK = FOUCOM.F4CLEUNIK
> > and FOULIVCD.F5CLEUNIK = FOUCOMLG.F5CLEUNIK
> > group by FOUCOM.F4CLEUNIK, FOUCOM.DATE, FOUCOMLG.F5CLEUNIK,


FOUCOMLG.QTE
> > having FOUCOMLG.QTE > SUM(FOULIVCD.QTE)
>
> on a ici des jointures fermees donc n'apparaitront pas les commandes qui
> n'ont pas ete livrees
> (car pas de ligne dans FOULIVCD) c'est pour ca que j'avais utiliser LEFT
> JOIN pour avoir egalement les commandes non livrees.
>
> >
> > si j'utilise having FOUCOMLG.QTE <= SUM(FOULIVCD.QTE) la requete me
> renvoie
> > des résultats mais qui correspondent à quoi ?
> > (normallement les lignes de commandes qui ont ete livrées - ou plus)
> > Je craque sur ce problème qui semble simple pourtant !!!
>
> la requete devrait renvoyer les commandes livrees complemetement ou non


,
> mais qui ont deja eu au moins une livraison
>
>
> >
> > PS: ai essayé:
> > select FOUCOM.F4CLEUNIK, FOUCOM.DATE, FOUCOMLG.F5CLEUNIK,


FOUCOMLG.QTE,
> > sum(FOULIVCD.QTE) as QteRecue
> > from FOUCOM FOUCOM, FOUCOMLG FOUCOMLG, FOULIVCD FOULIVCD
> > where FOUCOM.TERMINE = 0
> > and FOUCOMLG.F4CLEUNIK = FOUCOM.F4CLEUNIK
> > and FOULIVCD.F5CLEUNIK = FOUCOMLG.F5CLEUNIK
> > group by FOUCOM.F4CLEUNIK, FOUCOM.DATE, FOUCOMLG.F5CLEUNIK,


FOUCOMLG.QTE
> > having FOUCOMLG.QTE > QteRecue
> >
> > sans plus de succes !
> idem precedement la jointure est fermee
>
> que donne la requete que j'ai ecrit
> car il faut obsolument un alias sur la table de depart car les parcours
sont
> bien differents ?
> >
> >
> > "Firetox" a écrit dans le message de
> > news:c5iop7$31c$
> > > Petite question
> > >
> > > une ligne de commande peut faire l'objet de plusieurs ligne de
reception
> ?
> > > essaye d'inversee la condition : having FOUCOMLG.QTE < > > SUM(FOULIVCD.QTE)
> > > si tu obtient toutes les lignes ca veut dire que la condition n'est
pas
> > > bonne
> > >
> > > sur mon test j'ai une ligne de reception pour une ligne de commande
> (donc
> > > pas deSUM)
> > > et ca fonctionne. maitenant il faut vraiement connaitre la struture


de
> la
> > > base (surtout les cardinalite entre les entite car sinon on va


tourner
> en
> > > rond)
> > >
> > > bon dev
> > > @+
> > >
> > >
> > > "I.G.LOG" a écrit dans le message de news:
> > > c5iocl$7m3$
> > > > J'ai même essayé plus simplement (puisque le lignes de commande
> soldées
> > > ont
> > > > forcemment des livraisons):
> > > >
> > > > select FOUCOM .F4CLEUNIK, FOUCOM .DATE, FOUCOM .RAISON,
> > > > FOUCOMLG .F5CLEUNIK, FOUCOMLG .QTE
> > > > from FOUCOM FOUCOM, FOUCOMLG FOUCOMLG, FOULIVCD FOULIVCD
> > > > where FOUCOM.TERMINE = 0
> > > > and FOUCOMLG.F4CLEUNIK = FOUCOM.F4CLEUNIK
> > > > and FOULIVCD.F5CLEUNIK = FOUCOMLG.F5CLEUNIK
> > > > group by FOULIVCD.F5CLEUNIK
> > > > having FOUCOMLG.QTE > SUM(FOULIVCD.QTE)
> > > >
> > > > mais rien n'y fait, la requete ne me renvoie rien. J'ai testé les
> > > fichiers,
> > > > il y a bien des enregistrements non soldés ?!
> > > > NB: fichiers HF 5.5
> > > >
> > > > "Firetox" a écrit dans le message de
> > > > news:c5imab$1qp$
> > > > > Bonjour,
> > > > >
> > > > > avec un alias sur la table des FOUCOM vous pouvez avoir cette
> requete
> > > > > elle permet un parcous sur les 2 chaine de façon distinct et ne
sont
> > > > > regroupe
> > > > > que par la jointure des tables FOUCOM qui permet d'avoir la
requete
> > > > > cherchée.
> > > > >
> > > > > SELECT
> > > > > FOUCOM .F4CLEUNIK, FOUCOM .DATE, FOUCOM .RAISON,
> > > > > FOUCOMLG .F5CLEUNIK, FOUCOMLG .QTE
> > > > > FROM
> > > > > FOUCOM FA LEFT JOIN FOUCOMLG USING (F4CLEUNIK),
> > > > > FOUCOM FB LEFT JOIN FOULIVCD USING (F5CLEUNIK)
> > > > >
> > > > > WHERE
> > > > > FA .F4CLEUNIK = FB.F4CLEUNIK // jointure des 2
alias
> > > > > AND FA.TERMINE = 0
> > > > >
> > > > > GROUP BY FOULIVCD.F5CLEUNIK
> > > > >
> > > > > HAVING FOUCOMLG .QTE > SUM(FOULIVCD.QTE )
> > > > >
> > > > >
> > > > > Bon dev
> > > > > @+
> > > > >
> > > > > Firetox
> > > > >
> > > > > "I.G.LOG" a écrit dans le message de news:
> > > > > c5h9go$mi3$
> > > > > > Bonsoir à tous.
> > > > > > Je suis toujours dans mes requetes SQL et je pietine !
> > > > > >
> > > > > > Je voudrais recuperer toutes les lignes de commandes
fournisseurs
> > qui
> > > ne
> > > > > > sont pas soldées.
> > > > > >
> > > > > > J'ai les tables suivantes
> > > > > > FOUCOM (entete commande fournisseur)
> > > > > > F4CLEUNIK (entier)
> > > > > > TERMINE (booleen) (commande soldée ou pas)
> > > > > >
> > > > > > FOUCOMLG (lignes de commande)
> > > > > > F15CLEUNIK (entier)
> > > > > > F4CLEUNIK (identifiant commande)
> > > > > > QTE (reel) (qté commandée)
> > > > > >
> > > > > > FOULIVCD (lignes d'une reception fournisseur)
> > > > > > F5CLEUNIK (entire: pointeur sur ligne commande)
> > > > > > F1CLEUNIK (identifiant B.L. fournisseur)
> > > > > > QTE (reel) (qté recue)
> > > > > >
> > > > > >
> > > > > > Et ma requete:
> > > > > >
> > > > > > select F4.F4CLEUNIK, F4.DATE, F.RAISON, L.F5CLEUNIK, L.QTE
> > > > > > from FOUCOM F4, FOUCOMLG L
> > > > > > where (F4.TERMINE = 0)
> > > > > > and (L.F4CLEUNIK = F4.F4CLEUNIK)
> > > > > > having (L.QTE > (select sum(R.QTE) from FOULIVCD R where
> R.F5CLEUNIK
> > > > > > > > > L.F5CLEUNIK))
> > > > > >
> > > > > > qui me retourne toutes les lignes de commandes meme si la
quantite
> > est
> > > > > > totalement recue ????
> > > > > > J'ai essayé avec des GROUP BY mais sans plus de succès ?!
> > > > > >
> > > > > > Merci à tous pour vos conseils
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>




Avatar
Firetox
je verrais ca plutot comme ca :

select FA .F4CLEUNIK, FA .DATE, FA .RAISON, FOUCOMLG.F5CLEUNIK,
FOUCOMLG.QTE
from
FOUCOM FA left outer join FOUCOMLG on (FOUCOMLG.F4CLEUNIK FA.4CLEUNIK),
FOUCOM FB left outer join FOULIVCD FOULIVCD on (FOULIVCD.F5CLEUNIK FB.F5CLEUNIK)

where
FA.F4CLEUNIK = FB.F4CLEUNIK
AND FA .TERMINE = 0

group by FOULIVCD.F5CLEUNIK
having FOUCOMLG.QTE > sum(FOULIVCD.QTE)

est ce que celle la plante ?

Firetox

"I.G.LOG" a écrit dans le message de news:
c5itub$2vv$
Requete qui ne plante pas:

select FOUCOM.F4CLEUNIK, FOUCOM.DATE, FOUCOM.RAISON, FOUCOMLG.F5CLEUNIK,
FOUCOMLG.QTE
from FOUCOM FOUCOM left outer join FOUCOMLG FOUCOMLG on


(FOUCOMLG.F4CLEUNIK
= FOUCOM.F4CLEUNIK),
FOUCOMLG FOUCOMLG left outer join FOULIVCD FOULIVCD on


(FOULIVCD.F5CLEUNIK
= FOUCOMLG.F5CLEUNIK)
where FOUCOM.TERMINE = 0
group by FOULIVCD.F5CLEUNIK
having FOUCOMLG.QTE > sum(FOULIVCD.QTE)

mais qui ne retourne rien !!!!

"I.G.LOG" a écrit dans le message de
news:c5itn0$uch$
> Le mot USING n'est pas reconnu par WD8. Voici donc votre requete


modifiée:
>
> select FOUCOM .F4CLEUNIK, FOUCOM .DATE, FOUCOM .RAISON,
> FOUCOMLG .F5CLEUNIK, FOUCOMLG .QTE
> from FOUCOM FOUCOM left outer join FOUCOMLG F1 on (F1.F4CLEUNIK > > FOUCOM.F4CLEUNIK),
> FOUCOMLG FOUCOMLG left outer join FOULIVCD FOULIVCD on
(FOULIVCD.F5CLEUNIK
> = FOUCOMLG .F5CLEUNIK)
> where FOUCOM.TERMINE = 0
> group by FOULIVCD.F5CLEUNIK
> having FOUCOMLG.QTE > sum(FOULIVCD.QTE)
>
> et là j'ai une erreur grave à l'exécution dans WD80SQL.DLL !!! (j'avais
déjà
> eu ce problème que j'ai communiqué au ST, sans réponse à ce jour)
>
> "Firetox" a écrit dans le message de
> news:c5isrf$51d$
> > "I.G.LOG" a écrit dans le message de news:
> > c5irim$2mc$
> > > Oui, chaque ligne de commande peut avoir plusieurs reception
fournisseur
> > > (livraison en plusieurs BL)
> > >
> > > La requete suivante ne donne rien:
> > >
> > > select FOUCOM.F4CLEUNIK, FOUCOM.DATE, FOUCOMLG.F5CLEUNIK,


FOUCOMLG.QTE
> > > from FOUCOM FOUCOM, FOUCOMLG FOUCOMLG, FOULIVCD FOULIVCD
> > > where FOUCOM.TERMINE = 0
> > > and FOUCOMLG.F4CLEUNIK = FOUCOM.F4CLEUNIK
> > > and FOULIVCD.F5CLEUNIK = FOUCOMLG.F5CLEUNIK
> > > group by FOUCOM.F4CLEUNIK, FOUCOM.DATE, FOUCOMLG.F5CLEUNIK,
FOUCOMLG.QTE
> > > having FOUCOMLG.QTE > SUM(FOULIVCD.QTE)
> >
> > on a ici des jointures fermees donc n'apparaitront pas les commandes


qui
> > n'ont pas ete livrees
> > (car pas de ligne dans FOULIVCD) c'est pour ca que j'avais utiliser


LEFT
> > JOIN pour avoir egalement les commandes non livrees.
> >
> > >
> > > si j'utilise having FOUCOMLG.QTE <= SUM(FOULIVCD.QTE) la requete me
> > renvoie
> > > des résultats mais qui correspondent à quoi ?
> > > (normallement les lignes de commandes qui ont ete livrées - ou plus)
> > > Je craque sur ce problème qui semble simple pourtant !!!
> >
> > la requete devrait renvoyer les commandes livrees complemetement ou


non
,
> > mais qui ont deja eu au moins une livraison
> >
> >
> > >
> > > PS: ai essayé:
> > > select FOUCOM.F4CLEUNIK, FOUCOM.DATE, FOUCOMLG.F5CLEUNIK,
FOUCOMLG.QTE,
> > > sum(FOULIVCD.QTE) as QteRecue
> > > from FOUCOM FOUCOM, FOUCOMLG FOUCOMLG, FOULIVCD FOULIVCD
> > > where FOUCOM.TERMINE = 0
> > > and FOUCOMLG.F4CLEUNIK = FOUCOM.F4CLEUNIK
> > > and FOULIVCD.F5CLEUNIK = FOUCOMLG.F5CLEUNIK
> > > group by FOUCOM.F4CLEUNIK, FOUCOM.DATE, FOUCOMLG.F5CLEUNIK,
FOUCOMLG.QTE
> > > having FOUCOMLG.QTE > QteRecue
> > >
> > > sans plus de succes !
> > idem precedement la jointure est fermee
> >
> > que donne la requete que j'ai ecrit
> > car il faut obsolument un alias sur la table de depart car les


parcours
> sont
> > bien differents ?
> > >
> > >
> > > "Firetox" a écrit dans le message de
> > > news:c5iop7$31c$
> > > > Petite question
> > > >
> > > > une ligne de commande peut faire l'objet de plusieurs ligne de
> reception
> > ?
> > > > essaye d'inversee la condition : having FOUCOMLG.QTE < > > > SUM(FOULIVCD.QTE)
> > > > si tu obtient toutes les lignes ca veut dire que la condition


n'est
> pas
> > > > bonne
> > > >
> > > > sur mon test j'ai une ligne de reception pour une ligne de


commande
> > (donc
> > > > pas deSUM)
> > > > et ca fonctionne. maitenant il faut vraiement connaitre la


struture
de
> > la
> > > > base (surtout les cardinalite entre les entite car sinon on va
tourner
> > en
> > > > rond)
> > > >
> > > > bon dev
> > > > @+
> > > >
> > > >
> > > > "I.G.LOG" a écrit dans le message de news:
> > > > c5iocl$7m3$
> > > > > J'ai même essayé plus simplement (puisque le lignes de commande
> > soldées
> > > > ont
> > > > > forcemment des livraisons):
> > > > >
> > > > > select FOUCOM .F4CLEUNIK, FOUCOM .DATE, FOUCOM .RAISON,
> > > > > FOUCOMLG .F5CLEUNIK, FOUCOMLG .QTE
> > > > > from FOUCOM FOUCOM, FOUCOMLG FOUCOMLG, FOULIVCD FOULIVCD
> > > > > where FOUCOM.TERMINE = 0
> > > > > and FOUCOMLG.F4CLEUNIK = FOUCOM.F4CLEUNIK
> > > > > and FOULIVCD.F5CLEUNIK = FOUCOMLG.F5CLEUNIK
> > > > > group by FOULIVCD.F5CLEUNIK
> > > > > having FOUCOMLG.QTE > SUM(FOULIVCD.QTE)
> > > > >
> > > > > mais rien n'y fait, la requete ne me renvoie rien. J'ai testé


les
> > > > fichiers,
> > > > > il y a bien des enregistrements non soldés ?!
> > > > > NB: fichiers HF 5.5
> > > > >
> > > > > "Firetox" a écrit dans le message


de
> > > > > news:c5imab$1qp$
> > > > > > Bonjour,
> > > > > >
> > > > > > avec un alias sur la table des FOUCOM vous pouvez avoir cette
> > requete
> > > > > > elle permet un parcous sur les 2 chaine de façon distinct et


ne
> sont
> > > > > > regroupe
> > > > > > que par la jointure des tables FOUCOM qui permet d'avoir la
> requete
> > > > > > cherchée.
> > > > > >
> > > > > > SELECT
> > > > > > FOUCOM .F4CLEUNIK, FOUCOM .DATE, FOUCOM


.RAISON,
> > > > > > FOUCOMLG .F5CLEUNIK, FOUCOMLG .QTE
> > > > > > FROM
> > > > > > FOUCOM FA LEFT JOIN FOUCOMLG USING


(F4CLEUNIK),
> > > > > > FOUCOM FB LEFT JOIN FOULIVCD USING (F5CLEUNIK)
> > > > > >
> > > > > > WHERE
> > > > > > FA .F4CLEUNIK = FB.F4CLEUNIK // jointure des 2
> alias
> > > > > > AND FA.TERMINE = 0
> > > > > >
> > > > > > GROUP BY FOULIVCD.F5CLEUNIK
> > > > > >
> > > > > > HAVING FOUCOMLG .QTE > SUM(FOULIVCD.QTE )
> > > > > >
> > > > > >
> > > > > > Bon dev
> > > > > > @+
> > > > > >
> > > > > > Firetox
> > > > > >
> > > > > > "I.G.LOG" a écrit dans le message de news:
> > > > > > c5h9go$mi3$
> > > > > > > Bonsoir à tous.
> > > > > > > Je suis toujours dans mes requetes SQL et je pietine !
> > > > > > >
> > > > > > > Je voudrais recuperer toutes les lignes de commandes
> fournisseurs
> > > qui
> > > > ne
> > > > > > > sont pas soldées.
> > > > > > >
> > > > > > > J'ai les tables suivantes
> > > > > > > FOUCOM (entete commande fournisseur)
> > > > > > > F4CLEUNIK (entier)
> > > > > > > TERMINE (booleen) (commande soldée ou pas)
> > > > > > >
> > > > > > > FOUCOMLG (lignes de commande)
> > > > > > > F15CLEUNIK (entier)
> > > > > > > F4CLEUNIK (identifiant commande)
> > > > > > > QTE (reel) (qté commandée)
> > > > > > >
> > > > > > > FOULIVCD (lignes d'une reception fournisseur)
> > > > > > > F5CLEUNIK (entire: pointeur sur ligne commande)
> > > > > > > F1CLEUNIK (identifiant B.L. fournisseur)
> > > > > > > QTE (reel) (qté recue)
> > > > > > >
> > > > > > >
> > > > > > > Et ma requete:
> > > > > > >
> > > > > > > select F4.F4CLEUNIK, F4.DATE, F.RAISON, L.F5CLEUNIK, L.QTE
> > > > > > > from FOUCOM F4, FOUCOMLG L
> > > > > > > where (F4.TERMINE = 0)
> > > > > > > and (L.F4CLEUNIK = F4.F4CLEUNIK)
> > > > > > > having (L.QTE > (select sum(R.QTE) from FOULIVCD R where
> > R.F5CLEUNIK
> > > > > > > > > > > L.F5CLEUNIK))
> > > > > > >
> > > > > > > qui me retourne toutes les lignes de commandes meme si la
> quantite
> > > est
> > > > > > > totalement recue ????
> > > > > > > J'ai essayé avec des GROUP BY mais sans plus de succès ?!
> > > > > > >
> > > > > > > Merci à tous pour vos conseils
> > > > > > >
> > > > > > >
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>




Avatar
I.G.LOG
select FA.F4CLEUNIK, FA.DATE, FA.RAISON, FOUCOMLG.F5CLEUNIK,FOUCOMLG.QTE
from
FOUCOM FA left outer join FOUCOMLG FOUCOMLG on (FOUCOMLG.F4CLEUNIK FA.F4CLEUNIK),
FOUCOMLG FB left outer join FOULIVCD FOULIVCD on (FOULIVCD.F5CLEUNIK FB.F5CLEUNIK)
where FA.F4CLEUNIK = FB.F4CLEUNIK
and FA .TERMINE = 0
group by FOULIVCD.F5CLEUNIK
having FB.QTE > sum(FOULIVCD.QTE)

erreur "problème d'initialisation de la requete" puis "70208".

De plus, pourquoi les left outer join puisque si la commande n'a pas de
lignes ou les lignes n'ont pas de reception je n'ai pas besoin qu'elles
apparaissent (je cherche les commandes qui comportent au moins une ligne de
commande non recue en totalité (rappel: chaque ligne de commande peut faire
l'objet de plusieurs receptions)
Je ne pensais pas que ca serait un tel casse-tete !

"Firetox" a écrit dans le message de
news:c5iuqq$60i$
je verrais ca plutot comme ca :

select FA .F4CLEUNIK, FA .DATE, FA .RAISON, FOUCOMLG.F5CLEUNIK,
FOUCOMLG.QTE
from
FOUCOM FA left outer join FOUCOMLG on (FOUCOMLG.F4CLEUNIK > FA.4CLEUNIK),
FOUCOM FB left outer join FOULIVCD FOULIVCD on


(FOULIVCD.F5CLEUNIK > FB.F5CLEUNIK)

where
FA.F4CLEUNIK = FB.F4CLEUNIK
AND FA .TERMINE = 0

group by FOULIVCD.F5CLEUNIK
having FOUCOMLG.QTE > sum(FOULIVCD.QTE)

est ce que celle la plante ?

Firetox

"I.G.LOG" a écrit dans le message de news:
c5itub$2vv$
> Requete qui ne plante pas:
>
> select FOUCOM.F4CLEUNIK, FOUCOM.DATE, FOUCOM.RAISON, FOUCOMLG.F5CLEUNIK,
> FOUCOMLG.QTE
> from FOUCOM FOUCOM left outer join FOUCOMLG FOUCOMLG on
(FOUCOMLG.F4CLEUNIK
> = FOUCOM.F4CLEUNIK),
> FOUCOMLG FOUCOMLG left outer join FOULIVCD FOULIVCD on
(FOULIVCD.F5CLEUNIK
> = FOUCOMLG.F5CLEUNIK)
> where FOUCOM.TERMINE = 0
> group by FOULIVCD.F5CLEUNIK
> having FOUCOMLG.QTE > sum(FOULIVCD.QTE)
>
> mais qui ne retourne rien !!!!
>
> "I.G.LOG" a écrit dans le message de
> news:c5itn0$uch$
> > Le mot USING n'est pas reconnu par WD8. Voici donc votre requete
modifiée:
> >
> > select FOUCOM .F4CLEUNIK, FOUCOM .DATE, FOUCOM .RAISON,
> > FOUCOMLG .F5CLEUNIK, FOUCOMLG .QTE
> > from FOUCOM FOUCOM left outer join FOUCOMLG F1 on (F1.F4CLEUNIK > > > FOUCOM.F4CLEUNIK),
> > FOUCOMLG FOUCOMLG left outer join FOULIVCD FOULIVCD on
> (FOULIVCD.F5CLEUNIK
> > = FOUCOMLG .F5CLEUNIK)
> > where FOUCOM.TERMINE = 0
> > group by FOULIVCD.F5CLEUNIK
> > having FOUCOMLG.QTE > sum(FOULIVCD.QTE)
> >
> > et là j'ai une erreur grave à l'exécution dans WD80SQL.DLL !!!


(j'avais
> déjà
> > eu ce problème que j'ai communiqué au ST, sans réponse à ce jour)
> >
> > "Firetox" a écrit dans le message de
> > news:c5isrf$51d$
> > > "I.G.LOG" a écrit dans le message de news:
> > > c5irim$2mc$
> > > > Oui, chaque ligne de commande peut avoir plusieurs reception
> fournisseur
> > > > (livraison en plusieurs BL)
> > > >
> > > > La requete suivante ne donne rien:
> > > >
> > > > select FOUCOM.F4CLEUNIK, FOUCOM.DATE, FOUCOMLG.F5CLEUNIK,
FOUCOMLG.QTE
> > > > from FOUCOM FOUCOM, FOUCOMLG FOUCOMLG, FOULIVCD FOULIVCD
> > > > where FOUCOM.TERMINE = 0
> > > > and FOUCOMLG.F4CLEUNIK = FOUCOM.F4CLEUNIK
> > > > and FOULIVCD.F5CLEUNIK = FOUCOMLG.F5CLEUNIK
> > > > group by FOUCOM.F4CLEUNIK, FOUCOM.DATE, FOUCOMLG.F5CLEUNIK,
> FOUCOMLG.QTE
> > > > having FOUCOMLG.QTE > SUM(FOULIVCD.QTE)
> > >
> > > on a ici des jointures fermees donc n'apparaitront pas les commandes
qui
> > > n'ont pas ete livrees
> > > (car pas de ligne dans FOULIVCD) c'est pour ca que j'avais utiliser
LEFT
> > > JOIN pour avoir egalement les commandes non livrees.
> > >
> > > >
> > > > si j'utilise having FOUCOMLG.QTE <= SUM(FOULIVCD.QTE) la requete


me
> > > renvoie
> > > > des résultats mais qui correspondent à quoi ?
> > > > (normallement les lignes de commandes qui ont ete livrées - ou


plus)
> > > > Je craque sur ce problème qui semble simple pourtant !!!
> > >
> > > la requete devrait renvoyer les commandes livrees complemetement ou
non
> ,
> > > mais qui ont deja eu au moins une livraison
> > >
> > >
> > > >
> > > > PS: ai essayé:
> > > > select FOUCOM.F4CLEUNIK, FOUCOM.DATE, FOUCOMLG.F5CLEUNIK,
> FOUCOMLG.QTE,
> > > > sum(FOULIVCD.QTE) as QteRecue
> > > > from FOUCOM FOUCOM, FOUCOMLG FOUCOMLG, FOULIVCD FOULIVCD
> > > > where FOUCOM.TERMINE = 0
> > > > and FOUCOMLG.F4CLEUNIK = FOUCOM.F4CLEUNIK
> > > > and FOULIVCD.F5CLEUNIK = FOUCOMLG.F5CLEUNIK
> > > > group by FOUCOM.F4CLEUNIK, FOUCOM.DATE, FOUCOMLG.F5CLEUNIK,
> FOUCOMLG.QTE
> > > > having FOUCOMLG.QTE > QteRecue
> > > >
> > > > sans plus de succes !
> > > idem precedement la jointure est fermee
> > >
> > > que donne la requete que j'ai ecrit
> > > car il faut obsolument un alias sur la table de depart car les
parcours
> > sont
> > > bien differents ?
> > > >
> > > >
> > > > "Firetox" a écrit dans le message de
> > > > news:c5iop7$31c$
> > > > > Petite question
> > > > >
> > > > > une ligne de commande peut faire l'objet de plusieurs ligne de
> > reception
> > > ?
> > > > > essaye d'inversee la condition : having FOUCOMLG.QTE < > > > > SUM(FOULIVCD.QTE)
> > > > > si tu obtient toutes les lignes ca veut dire que la condition
n'est
> > pas
> > > > > bonne
> > > > >
> > > > > sur mon test j'ai une ligne de reception pour une ligne de
commande
> > > (donc
> > > > > pas deSUM)
> > > > > et ca fonctionne. maitenant il faut vraiement connaitre la
struture
> de
> > > la
> > > > > base (surtout les cardinalite entre les entite car sinon on va
> tourner
> > > en
> > > > > rond)
> > > > >
> > > > > bon dev
> > > > > @+
> > > > >
> > > > >
> > > > > "I.G.LOG" a écrit dans le message de news:
> > > > > c5iocl$7m3$
> > > > > > J'ai même essayé plus simplement (puisque le lignes de


commande
> > > soldées
> > > > > ont
> > > > > > forcemment des livraisons):
> > > > > >
> > > > > > select FOUCOM .F4CLEUNIK, FOUCOM .DATE, FOUCOM .RAISON,
> > > > > > FOUCOMLG .F5CLEUNIK, FOUCOMLG .QTE
> > > > > > from FOUCOM FOUCOM, FOUCOMLG FOUCOMLG, FOULIVCD FOULIVCD
> > > > > > where FOUCOM.TERMINE = 0
> > > > > > and FOUCOMLG.F4CLEUNIK = FOUCOM.F4CLEUNIK
> > > > > > and FOULIVCD.F5CLEUNIK = FOUCOMLG.F5CLEUNIK
> > > > > > group by FOULIVCD.F5CLEUNIK
> > > > > > having FOUCOMLG.QTE > SUM(FOULIVCD.QTE)
> > > > > >
> > > > > > mais rien n'y fait, la requete ne me renvoie rien. J'ai testé
les
> > > > > fichiers,
> > > > > > il y a bien des enregistrements non soldés ?!
> > > > > > NB: fichiers HF 5.5
> > > > > >
> > > > > > "Firetox" a écrit dans le


message
de
> > > > > > news:c5imab$1qp$
> > > > > > > Bonjour,
> > > > > > >
> > > > > > > avec un alias sur la table des FOUCOM vous pouvez avoir


cette
> > > requete
> > > > > > > elle permet un parcous sur les 2 chaine de façon distinct et
ne
> > sont
> > > > > > > regroupe
> > > > > > > que par la jointure des tables FOUCOM qui permet d'avoir la
> > requete
> > > > > > > cherchée.
> > > > > > >
> > > > > > > SELECT
> > > > > > > FOUCOM .F4CLEUNIK, FOUCOM .DATE, FOUCOM
.RAISON,
> > > > > > > FOUCOMLG .F5CLEUNIK, FOUCOMLG .QTE
> > > > > > > FROM
> > > > > > > FOUCOM FA LEFT JOIN FOUCOMLG USING
(F4CLEUNIK),
> > > > > > > FOUCOM FB LEFT JOIN FOULIVCD USING


(F5CLEUNIK)
> > > > > > >
> > > > > > > WHERE
> > > > > > > FA .F4CLEUNIK = FB.F4CLEUNIK // jointure des


2
> > alias
> > > > > > > AND FA.TERMINE = 0
> > > > > > >
> > > > > > > GROUP BY FOULIVCD.F5CLEUNIK
> > > > > > >
> > > > > > > HAVING FOUCOMLG .QTE > SUM(FOULIVCD.QTE )
> > > > > > >
> > > > > > >
> > > > > > > Bon dev
> > > > > > > @+
> > > > > > >
> > > > > > > Firetox
> > > > > > >
> > > > > > > "I.G.LOG" a écrit dans le message de news:
> > > > > > > c5h9go$mi3$
> > > > > > > > Bonsoir à tous.
> > > > > > > > Je suis toujours dans mes requetes SQL et je pietine !
> > > > > > > >
> > > > > > > > Je voudrais recuperer toutes les lignes de commandes
> > fournisseurs
> > > > qui
> > > > > ne
> > > > > > > > sont pas soldées.
> > > > > > > >
> > > > > > > > J'ai les tables suivantes
> > > > > > > > FOUCOM (entete commande fournisseur)
> > > > > > > > F4CLEUNIK (entier)
> > > > > > > > TERMINE (booleen) (commande soldée ou pas)
> > > > > > > >
> > > > > > > > FOUCOMLG (lignes de commande)
> > > > > > > > F15CLEUNIK (entier)
> > > > > > > > F4CLEUNIK (identifiant commande)
> > > > > > > > QTE (reel) (qté commandée)
> > > > > > > >
> > > > > > > > FOULIVCD (lignes d'une reception fournisseur)
> > > > > > > > F5CLEUNIK (entire: pointeur sur ligne commande)
> > > > > > > > F1CLEUNIK (identifiant B.L. fournisseur)
> > > > > > > > QTE (reel) (qté recue)
> > > > > > > >
> > > > > > > >
> > > > > > > > Et ma requete:
> > > > > > > >
> > > > > > > > select F4.F4CLEUNIK, F4.DATE, F.RAISON, L.F5CLEUNIK, L.QTE
> > > > > > > > from FOUCOM F4, FOUCOMLG L
> > > > > > > > where (F4.TERMINE = 0)
> > > > > > > > and (L.F4CLEUNIK = F4.F4CLEUNIK)
> > > > > > > > having (L.QTE > (select sum(R.QTE) from FOULIVCD R where
> > > R.F5CLEUNIK
> > > > > > > > > > > > > L.F5CLEUNIK))
> > > > > > > >
> > > > > > > > qui me retourne toutes les lignes de commandes meme si la
> > quantite
> > > > est
> > > > > > > > totalement recue ????
> > > > > > > > J'ai essayé avec des GROUP BY mais sans plus de succès ?!
> > > > > > > >
> > > > > > > > Merci à tous pour vos conseils
> > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>




Avatar
I.G.LOG
oups. effectivement le left outer join sur FOUCOMLG indispensable pour les
lignes de commande qui n'ont aucune reception !
(je fais trop de choses en même temps: cerveau HS)
je continue les tests
Merci encore

"I.G.LOG" a écrit dans le message de
news:c5j0eu$hag$
select FA.F4CLEUNIK, FA.DATE, FA.RAISON, FOUCOMLG.F5CLEUNIK,FOUCOMLG.QTE
from
FOUCOM FA left outer join FOUCOMLG FOUCOMLG on (FOUCOMLG.F4CLEUNIK > FA.F4CLEUNIK),
FOUCOMLG FB left outer join FOULIVCD FOULIVCD on (FOULIVCD.F5CLEUNIK > FB.F5CLEUNIK)
where FA.F4CLEUNIK = FB.F4CLEUNIK
and FA .TERMINE = 0
group by FOULIVCD.F5CLEUNIK
having FB.QTE > sum(FOULIVCD.QTE)

erreur "problème d'initialisation de la requete" puis "70208".

De plus, pourquoi les left outer join puisque si la commande n'a pas de
lignes ou les lignes n'ont pas de reception je n'ai pas besoin qu'elles
apparaissent (je cherche les commandes qui comportent au moins une ligne


de
commande non recue en totalité (rappel: chaque ligne de commande peut


faire
l'objet de plusieurs receptions)
Je ne pensais pas que ca serait un tel casse-tete !

"Firetox" a écrit dans le message de
news:c5iuqq$60i$
> je verrais ca plutot comme ca :
>
> select FA .F4CLEUNIK, FA .DATE, FA .RAISON, FOUCOMLG.F5CLEUNIK,
> FOUCOMLG.QTE
> from
> FOUCOM FA left outer join FOUCOMLG on (FOUCOMLG.F4CLEUNIK > > FA.4CLEUNIK),
> FOUCOM FB left outer join FOULIVCD FOULIVCD on
(FOULIVCD.F5CLEUNIK > > FB.F5CLEUNIK)
>
> where
> FA.F4CLEUNIK = FB.F4CLEUNIK
> AND FA .TERMINE = 0
>
> group by FOULIVCD.F5CLEUNIK
> having FOUCOMLG.QTE > sum(FOULIVCD.QTE)
>
> est ce que celle la plante ?
>
> Firetox
>
> "I.G.LOG" a écrit dans le message de news:
> c5itub$2vv$
> > Requete qui ne plante pas:
> >
> > select FOUCOM.F4CLEUNIK, FOUCOM.DATE, FOUCOM.RAISON,


FOUCOMLG.F5CLEUNIK,
> > FOUCOMLG.QTE
> > from FOUCOM FOUCOM left outer join FOUCOMLG FOUCOMLG on
> (FOUCOMLG.F4CLEUNIK
> > = FOUCOM.F4CLEUNIK),
> > FOUCOMLG FOUCOMLG left outer join FOULIVCD FOULIVCD on
> (FOULIVCD.F5CLEUNIK
> > = FOUCOMLG.F5CLEUNIK)
> > where FOUCOM.TERMINE = 0
> > group by FOULIVCD.F5CLEUNIK
> > having FOUCOMLG.QTE > sum(FOULIVCD.QTE)
> >
> > mais qui ne retourne rien !!!!
> >
> > "I.G.LOG" a écrit dans le message de
> > news:c5itn0$uch$
> > > Le mot USING n'est pas reconnu par WD8. Voici donc votre requete
> modifiée:
> > >
> > > select FOUCOM .F4CLEUNIK, FOUCOM .DATE, FOUCOM .RAISON,
> > > FOUCOMLG .F5CLEUNIK, FOUCOMLG .QTE
> > > from FOUCOM FOUCOM left outer join FOUCOMLG F1 on (F1.F4CLEUNIK > > > > FOUCOM.F4CLEUNIK),
> > > FOUCOMLG FOUCOMLG left outer join FOULIVCD FOULIVCD on
> > (FOULIVCD.F5CLEUNIK
> > > = FOUCOMLG .F5CLEUNIK)
> > > where FOUCOM.TERMINE = 0
> > > group by FOULIVCD.F5CLEUNIK
> > > having FOUCOMLG.QTE > sum(FOULIVCD.QTE)
> > >
> > > et là j'ai une erreur grave à l'exécution dans WD80SQL.DLL !!!
(j'avais
> > déjà
> > > eu ce problème que j'ai communiqué au ST, sans réponse à ce jour)
> > >
> > > "Firetox" a écrit dans le message de
> > > news:c5isrf$51d$
> > > > "I.G.LOG" a écrit dans le message de news:
> > > > c5irim$2mc$
> > > > > Oui, chaque ligne de commande peut avoir plusieurs reception
> > fournisseur
> > > > > (livraison en plusieurs BL)
> > > > >
> > > > > La requete suivante ne donne rien:
> > > > >
> > > > > select FOUCOM.F4CLEUNIK, FOUCOM.DATE, FOUCOMLG.F5CLEUNIK,
> FOUCOMLG.QTE
> > > > > from FOUCOM FOUCOM, FOUCOMLG FOUCOMLG, FOULIVCD FOULIVCD
> > > > > where FOUCOM.TERMINE = 0
> > > > > and FOUCOMLG.F4CLEUNIK = FOUCOM.F4CLEUNIK
> > > > > and FOULIVCD.F5CLEUNIK = FOUCOMLG.F5CLEUNIK
> > > > > group by FOUCOM.F4CLEUNIK, FOUCOM.DATE, FOUCOMLG.F5CLEUNIK,
> > FOUCOMLG.QTE
> > > > > having FOUCOMLG.QTE > SUM(FOULIVCD.QTE)
> > > >
> > > > on a ici des jointures fermees donc n'apparaitront pas les


commandes
> qui
> > > > n'ont pas ete livrees
> > > > (car pas de ligne dans FOULIVCD) c'est pour ca que j'avais


utiliser
> LEFT
> > > > JOIN pour avoir egalement les commandes non livrees.
> > > >
> > > > >
> > > > > si j'utilise having FOUCOMLG.QTE <= SUM(FOULIVCD.QTE) la requete
me
> > > > renvoie
> > > > > des résultats mais qui correspondent à quoi ?
> > > > > (normallement les lignes de commandes qui ont ete livrées - ou
plus)
> > > > > Je craque sur ce problème qui semble simple pourtant !!!
> > > >
> > > > la requete devrait renvoyer les commandes livrees complemetement


ou
> non
> > ,
> > > > mais qui ont deja eu au moins une livraison
> > > >
> > > >
> > > > >
> > > > > PS: ai essayé:
> > > > > select FOUCOM.F4CLEUNIK, FOUCOM.DATE, FOUCOMLG.F5CLEUNIK,
> > FOUCOMLG.QTE,
> > > > > sum(FOULIVCD.QTE) as QteRecue
> > > > > from FOUCOM FOUCOM, FOUCOMLG FOUCOMLG, FOULIVCD FOULIVCD
> > > > > where FOUCOM.TERMINE = 0
> > > > > and FOUCOMLG.F4CLEUNIK = FOUCOM.F4CLEUNIK
> > > > > and FOULIVCD.F5CLEUNIK = FOUCOMLG.F5CLEUNIK
> > > > > group by FOUCOM.F4CLEUNIK, FOUCOM.DATE, FOUCOMLG.F5CLEUNIK,
> > FOUCOMLG.QTE
> > > > > having FOUCOMLG.QTE > QteRecue
> > > > >
> > > > > sans plus de succes !
> > > > idem precedement la jointure est fermee
> > > >
> > > > que donne la requete que j'ai ecrit
> > > > car il faut obsolument un alias sur la table de depart car les
> parcours
> > > sont
> > > > bien differents ?
> > > > >
> > > > >
> > > > > "Firetox" a écrit dans le message


de
> > > > > news:c5iop7$31c$
> > > > > > Petite question
> > > > > >
> > > > > > une ligne de commande peut faire l'objet de plusieurs ligne de
> > > reception
> > > > ?
> > > > > > essaye d'inversee la condition : having FOUCOMLG.QTE < > > > > > SUM(FOULIVCD.QTE)
> > > > > > si tu obtient toutes les lignes ca veut dire que la condition
> n'est
> > > pas
> > > > > > bonne
> > > > > >
> > > > > > sur mon test j'ai une ligne de reception pour une ligne de
> commande
> > > > (donc
> > > > > > pas deSUM)
> > > > > > et ca fonctionne. maitenant il faut vraiement connaitre la
> struture
> > de
> > > > la
> > > > > > base (surtout les cardinalite entre les entite car sinon on va
> > tourner
> > > > en
> > > > > > rond)
> > > > > >
> > > > > > bon dev
> > > > > > @+
> > > > > >
> > > > > >
> > > > > > "I.G.LOG" a écrit dans le message de news:
> > > > > > c5iocl$7m3$
> > > > > > > J'ai même essayé plus simplement (puisque le lignes de
commande
> > > > soldées
> > > > > > ont
> > > > > > > forcemment des livraisons):
> > > > > > >
> > > > > > > select FOUCOM .F4CLEUNIK, FOUCOM .DATE, FOUCOM .RAISON,
> > > > > > > FOUCOMLG .F5CLEUNIK, FOUCOMLG .QTE
> > > > > > > from FOUCOM FOUCOM, FOUCOMLG FOUCOMLG, FOULIVCD FOULIVCD
> > > > > > > where FOUCOM.TERMINE = 0
> > > > > > > and FOUCOMLG.F4CLEUNIK = FOUCOM.F4CLEUNIK
> > > > > > > and FOULIVCD.F5CLEUNIK = FOUCOMLG.F5CLEUNIK
> > > > > > > group by FOULIVCD.F5CLEUNIK
> > > > > > > having FOUCOMLG.QTE > SUM(FOULIVCD.QTE)
> > > > > > >
> > > > > > > mais rien n'y fait, la requete ne me renvoie rien. J'ai


testé
> les
> > > > > > fichiers,
> > > > > > > il y a bien des enregistrements non soldés ?!
> > > > > > > NB: fichiers HF 5.5
> > > > > > >
> > > > > > > "Firetox" a écrit dans le
message
> de
> > > > > > > news:c5imab$1qp$
> > > > > > > > Bonjour,
> > > > > > > >
> > > > > > > > avec un alias sur la table des FOUCOM vous pouvez avoir
cette
> > > > requete
> > > > > > > > elle permet un parcous sur les 2 chaine de façon distinct


et
> ne
> > > sont
> > > > > > > > regroupe
> > > > > > > > que par la jointure des tables FOUCOM qui permet d'avoir


la
> > > requete
> > > > > > > > cherchée.
> > > > > > > >
> > > > > > > > SELECT
> > > > > > > > FOUCOM .F4CLEUNIK, FOUCOM .DATE, FOUCOM
> .RAISON,
> > > > > > > > FOUCOMLG .F5CLEUNIK, FOUCOMLG .QTE
> > > > > > > > FROM
> > > > > > > > FOUCOM FA LEFT JOIN FOUCOMLG USING
> (F4CLEUNIK),
> > > > > > > > FOUCOM FB LEFT JOIN FOULIVCD USING
(F5CLEUNIK)
> > > > > > > >
> > > > > > > > WHERE
> > > > > > > > FA .F4CLEUNIK = FB.F4CLEUNIK // jointure


des
2
> > > alias
> > > > > > > > AND FA.TERMINE = 0
> > > > > > > >
> > > > > > > > GROUP BY FOULIVCD.F5CLEUNIK
> > > > > > > >
> > > > > > > > HAVING FOUCOMLG .QTE > SUM(FOULIVCD.QTE )
> > > > > > > >
> > > > > > > >
> > > > > > > > Bon dev
> > > > > > > > @+
> > > > > > > >
> > > > > > > > Firetox
> > > > > > > >
> > > > > > > > "I.G.LOG" a écrit dans le message de news:
> > > > > > > > c5h9go$mi3$
> > > > > > > > > Bonsoir à tous.
> > > > > > > > > Je suis toujours dans mes requetes SQL et je pietine !
> > > > > > > > >
> > > > > > > > > Je voudrais recuperer toutes les lignes de commandes
> > > fournisseurs
> > > > > qui
> > > > > > ne
> > > > > > > > > sont pas soldées.
> > > > > > > > >
> > > > > > > > > J'ai les tables suivantes
> > > > > > > > > FOUCOM (entete commande fournisseur)
> > > > > > > > > F4CLEUNIK (entier)
> > > > > > > > > TERMINE (booleen) (commande soldée ou pas)
> > > > > > > > >
> > > > > > > > > FOUCOMLG (lignes de commande)
> > > > > > > > > F15CLEUNIK (entier)
> > > > > > > > > F4CLEUNIK (identifiant commande)
> > > > > > > > > QTE (reel) (qté commandée)
> > > > > > > > >
> > > > > > > > > FOULIVCD (lignes d'une reception fournisseur)
> > > > > > > > > F5CLEUNIK (entire: pointeur sur ligne commande)
> > > > > > > > > F1CLEUNIK (identifiant B.L. fournisseur)
> > > > > > > > > QTE (reel) (qté recue)
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > Et ma requete:
> > > > > > > > >
> > > > > > > > > select F4.F4CLEUNIK, F4.DATE, F.RAISON, L.F5CLEUNIK,


L.QTE
> > > > > > > > > from FOUCOM F4, FOUCOMLG L
> > > > > > > > > where (F4.TERMINE = 0)
> > > > > > > > > and (L.F4CLEUNIK = F4.F4CLEUNIK)
> > > > > > > > > having (L.QTE > (select sum(R.QTE) from FOULIVCD R where
> > > > R.F5CLEUNIK
> > > > > > > > > > > > > > > L.F5CLEUNIK))
> > > > > > > > >
> > > > > > > > > qui me retourne toutes les lignes de commandes meme si


la
> > > quantite
> > > > > est
> > > > > > > > > totalement recue ????
> > > > > > > > > J'ai essayé avec des GROUP BY mais sans plus de succès


?!
> > > > > > > > >
> > > > > > > > > Merci à tous pour vos conseils
> > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>




Avatar
I.G.LOG
Dernier essai qui ne donne rien (j'abandonne ensuite)

select FOUCOM.F4CLEUNIK, FOUCOM.DATE, FOUCOMLG.F5CLEUNIK, FOUCOMLG.QTE as
QteCde, sum(FOULIVCD.QTE) as QteRecue
from FOUCOM FOUCOM, FOUCOMLG FOUCOMLG left outer join FOULIVCD FOULIVCD on
FOULIVCD.F5CLEUNIK = FOUCOMLG.F5CLEUNIK
where FOUCOM.TERMINE = 0
and FOUCOMLG.F4CLEUNIK = FOUCOM.F4CLEUNIK
group by FOUCOM.F4CLEUNIK, FOUCOM.DATE, FOUCOMLG.F5CLEUNIK, FOUCOMLG.QTE
having QteCde> QteRecue
-> message d'erreur "Qte ambigue" (???? plante sur QteCde !)

avec ...having FOUCOMLG.QTE > QteRecue pas d'erreur mais ne retourne rien
!!!!

si j'enlève le having, j'ai toutes les lignes memes celles recues en
intégralité. Soit équivalent a ma requete initiale :

select C.F4CLEUNIK, C.DATE, L.F5CLEUNIK, L.QTE
from FOUCOM C, FOUCOMLG L
where (C.TERMINE = 0)
and (L.F4CLEUNIK = C.F4CLEUNIK)
having (L.QTE > (select sum(R.QTE) from FOULIVCD R where R.F5CLEUNIK L.F5CLEUNIK))

grosse déception !
Mais... merci d'avoir bossé sur ce problème
1 2