PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Problème de double jointure
Problème de double jointure
Débuté par guest, 19 jan. 2006 13:09 - 4 réponses
Posté le 19 janvier 2006 - 13:09
Bonjour, je souhaite faire apparaitre dans une table la référence d'un produit possèdant
--> soit des pièces en stock et aucune pièces a rentrer
--> soit des pièces a rentrer mais auune en stock
--> soit des pièces en stock et des pièces a rentrer

Pour le moment, j'utilise 2 requetes distinctes
Celle ci donne les références possèdant des pièces en stock:

select Ref.refref, Pieces.piepie, Pieces.piemta
from Pieces join Ref on Pieces.pieref = Ref.refref
where Ref.refref between {param1} and {param2};

et celle-la donne les références possèdant des pièces a rentrer:

select Ref.refref, Achaart.artes, Achaart.artpie, Achaart.artqtf
from Achaart join Ref on Ref.refref = Achaart.artref
where Ref.refref between {param1} and {param2}

Mon problème est l'indexation des lignes dans la table parce que les requetes sont distinctes. Je voudrais réunir les 2 requetes (en fesant une double jointure) mais l'éditeur de requete ne comprend pas. Je dois aussi trouver un moyen rapide car aujourd'hui le traitement pour remplir la table (environ 15000 lignes) met plus ou moins 6 minutes.

Comment je peux faire ??

Merci d'avance et bon dev a tous...
Posté le 19 janvier 2006 - 13:59
sur quelle base de données ?

Dans son message précédent, Fabien a écrit :

Bonjour, je souhaite faire apparaitre dans une table la référence d'un
produit possèdant --> soit des pièces en stock et aucune pièces a rentrer
--> soit des pièces a rentrer mais auune en stock
--> soit des pièces en stock et des pièces a rentrer

Pour le moment, j'utilise 2 requetes distinctes
Celle ci donne les références possèdant des pièces en stock:

select Ref.refref, Pieces.piepie, Pieces.piemta
from Pieces join Ref on Pieces.pieref = Ref.refref
where Ref.refref between {param1} and {param2};

et celle-la donne les références possèdant des pièces a rentrer:

select Ref.refref, Achaart.artes, Achaart.artpie, Achaart.artqtf
from Achaart join Ref on Ref.refref = Achaart.artref
where Ref.refref between {param1} and {param2}

Mon problème est l'indexation des lignes dans la table parce que les requetes
sont distinctes. Je voudrais réunir les 2 requetes (en fesant une double
jointure) mais l'éditeur de requete ne comprend pas. Je dois aussi trouver un
moyen rapide car aujourd'hui le traitement pour remplir la table (environ
15000 lignes) met plus ou moins 6 minutes.

Comment je peux faire ??

Merci d'avance et bon dev a tous...



--
Pierre BOUSQUET

" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "
Posté le 19 janvier 2006 - 14:18
"Table": tu veux dire un champs table ou un fichier de données
si tu parle d'un champ table, je ne comprends pas bien "indexation"
Posté le 19 janvier 2006 - 14:33
bonjour

essayez ceci (pas tester)
select Ref.refref, Pieces.piepie, Pieces.piemta
from Pieces join Ref on Pieces.pieref = Ref.refref
Achaart join Ref on Ref.refref = Achaart.artref
where Ref.refref between {param1} and {param2}
cordialement JeAn-PhI

"Fabien" <guest@newsgroup.fr> a écrit dans le message de news:
43cf7093$1@news.pcsoft.fr...


Bonjour, je souhaite faire apparaitre dans une table la référence d'un
produit possèdant
--> soit des pièces en stock et aucune pièces a rentrer
--> soit des pièces a rentrer mais auune en stock
--> soit des pièces en stock et des pièces a rentrer

Pour le moment, j'utilise 2 requetes distinctes
Celle ci donne les références possèdant des pièces en stock:

select Ref.refref, Pieces.piepie, Pieces.piemta
from Pieces join Ref on Pieces.pieref = Ref.refref
where Ref.refref between {param1} and {param2};

et celle-la donne les références possèdant des pièces a rentrer:

select Ref.refref, Achaart.artes, Achaart.artpie, Achaart.artqtf
from Achaart join Ref on Ref.refref = Achaart.artref
where Ref.refref between {param1} and {param2}

Mon problème est l'indexation des lignes dans la table parce que les
requetes sont distinctes. Je voudrais réunir les 2 requetes (en fesant une
double jointure) mais l'éditeur de requete ne comprend pas. Je dois aussi
trouver un moyen rapide car aujourd'hui le traitement pour remplir la
table (environ 15000 lignes) met plus ou moins 6 minutes.

Comment je peux faire ??

Merci d'avance et bon dev a tous...
Posté le 19 janvier 2006 - 15:33
Le projet est tellement précis que j'ai du mal à expliquer mon problème

Exemple:
(1) la première requete me donne ceci en résultat:

Reference Pieces Longueur
100 1 10m
105 2 15m
110 1 10m
110 2 15m

(2) la deuxième requete me donne ceci en résultat:

Reference Date Pieces Longueur
100 20/01/2006 3 10m
101 25/01/2006 4 20m
110 22/01/2006 5 15m

(3) Le Résutltat souhaité dans un champ table (qui permet de faire un etat par la suite)
//quand la même reference reveint sur la ligne suivante, on ne l'inscrit pas

Reference Pièces Longueur Date Pièces Longueur
100 1 10m 20/01/2006 3 10m
101 25/01/2006 4 20m
105 2 15m
110 1 10m 22/01/2006 5 15m
2 15m



Si j'ajoute les lignes directement, la reference 105 aura ses pièces en stock, mais les pièces a rentrer de la référence 101...Voila ce que j'appelle "problème d'indexation"

Je voudrais un requete qui contruit directement le résultat souhaité (3)

J'espèreque j'ai été assez clair, car après avoir consulté les forum et l'aide en ligne je ne trouve pas de solution.