Pb requetes imbriquées!?
Stagiaire WDF
Inscrit:
27/06/2006 15:46
Post(s): 26
Bonjour,

Dans ma requetes je fais appel à plusieurs requetes, le Pb que ca mis un temps énorme pour avoir les resultats.
je peux pas faire autrement puisque je dois effectuer des calculs intermediaires d'où le fait d'utiliser plusieurs requetes avant d'arriver au resultat final.
le temps de calcul est dû qu'il doit balayer le fichier à chaque appelation du requete!
Merci pour votre aide!

voila un exemple de requete que j'utilise:

SELECT DISTINCT
RequeteRefProduit.Clé_Produit AS Clé_Produit,
RequeteRefProduit.Nbre_Bonnes AS Nbre_Bonnes,
RequeteRefProduit.Quantité_Rebuts AS Quantité_Rebuts,
RequeteRefProduit.Tps_Cycle_Stand AS Tps_Cycle_Stand,
RequeteRefProduit.Nbre_Bonnes + RequeteRefProduit.Quantité_Rebuts AS Total_Produite,
RequeteRefProduit.Tps_Bonnes AS Tps_Prod_Bonnes,
RequeteRefProduit.Tps_Rebuts AS Tps_Prod_Rebuts,
RequeteRefProduit.Tps_Rebuts + RequeteRefProduit.Tps_Bonnes AS TotatTempsProd,
ReqRefProduitChgtProd.Total_Temps_ChgtProd AS Total_Temps_ChgtProd,
ReqRefProduitDysOrg.Total_Temps_DysOrg AS Total_Temps_DysOrg,
ReqRefProduitPannes.Total_Temps_Pannes AS Total_Temps_Pannes,
(1000000* RequeteRefProduit.Quantité_Rebuts) / (RequeteRefProduit.Quantité_Rebuts + RequeteRefProduit.Nbre_Bonnes) AS PPM_Rebuts
FROM
Data_Produit,
Data_Rebuts,
RequeteRefProduit,
Data_Chgt_Prod,
ReqRefProduitChgtProd,
ReqRefProduitDysOrg,
ReqRefProduitPannes
WHERE
Data_Produit.Clé_Produit = Data_Rebuts.Clé_Produit
AND Data_Produit.Clé_Produit = RequeteRefProduit.Clé_Produit
AND Data_Chgt_Prod.Clé_Produit = Data_Produit.Clé_Produit
AND ReqRefProduitChgtProd.Clé_Produit = Data_Produit.Clé_Produit
AND ReqRefProduitDysOrg.Clé_Produit = Data_Produit.Clé_Produit
AND ReqRefProduitPannes.Clé_Produit = Data_Produit.Clé_Produit

Contribution le : 19/07/2006 15:06
Créer un fichier PDF de la contribution Imprimer


Re: Pb requetes imbriquées!?
Animateur WDF
Inscrit:
26/06/2002 16:24
De wdforge.org
Post(s): 2822
Sans analyser votre besoin dans le détail, j'attire votre attention sur l'éventualité d'adapter votre analyse au besoin du traitement...

Cette adaptation peut être par exemple la constitution de clés qui permettrons de grouper rapidement des informations à cumuler.

Ensuite, vous pouvez utiliser des fichiers temporaires (décrits en dynamique) pour stocker les valeurs intérmédaires de vos traitement. Ces fichiers sont créés dans des sources de données avec HDécritFichier().

Il est alors parfaitement possible d'exécuter votre traitement en plusieures étapes, chacune alimentant un fichier temporaire, lesquels sont alors utilisés pour la présentation du résultat final.


Note : pour éviter les conflicts, créez vos fichiers temporaires dans un répertoire spécifique à chaque utilisateur. Attention à libérer la source de données après utilisation.

Globalement, la stratégie consiste à procéder en deux étapes :
- rassembler les données nécessaire au traitement dans un espace adaptée au volume (tableau de structure, zonemémoire, fichier temporaire). Cette opération peut être mise à profit pour préparer les opérations de calcul (cumuls = modification des lignes identiques avec cumul des quantités)
- exploitation des données pour présentation.

Lors du rassemblement des données, penser aux threads pour par exemple exécuter plusieurs procédure simultanément.

Contribution le : 19/07/2006 15:36
_________________
R&B
Contact, CV.
Créer un fichier PDF de la contribution Imprimer


Re: Pb requetes imbriquées!?
Stagiaire WDF
Inscrit:
21/06/2006 11:16
Post(s): 18
Bonjour,

Ne pouvez pas faire les requetes séparement et stocker les résultats dans des tableaux.
Et ensuite faire les calculs par programmation et non directement par votre BdD. Les resultats devrait etre plus rapide.

Je reste a votre disposition

Bon courage

Contribution le : 19/07/2006 15:37
Créer un fichier PDF de la contribution Imprimer


Re: Pb requetes imbriquées!?
Stagiaire WDF
Inscrit:
27/06/2006 15:46
Post(s): 26
Merci pour vos éclaircissements et ces pistes que je vais explorer.si vous avez un exemple d'application n'hesitez pas à me l'envoyer SVP.

Rq: Sous Access le Pb ne se pose pas.

Merci.

Contribution le : 19/07/2006 16:27
Créer un fichier PDF de la contribution Imprimer


Re: Pb requetes imbriquées!?
Stagiaire WDF
Inscrit:
27/06/2006 15:46
Post(s): 26
Bonjour,
En partant de l'idée qui m'a inculqué R&B, je viens de créer des fichiers temps, le pb que je recupere pas de données dans mon fichier d'analyse.voila le code que je j'utilise:
//
HExécuteRequêteSQL(sSource,hRequêteDéfaut,maRequete)
descFic est une Description de Fichier
descRub est une Description de Rubrique
descFic..Nom="sSource"
descFic..NomPhysique="FichierTemp"
// création d'une rubrique
// nom de la rubrique
descRub..Nom = "Type_Chgt_Prod" // récupère des définitions existante (taille et type de rubrique)
descRub..Type= hRubTexte
descRub..Taille = 2
// rubrique clé unique
descRub..TypeClé = hCléUnique // ajout de la rubrique à la déclaration
HDécritRubrique(descFic,descRub)
// rubrique suivante (Temps)
descRub..Nom = "Temps"
descRub..Type = hRubEntier8
descRub..TypeClé = hCléUnique
HDécritRubrique(descFic,descRub)
// description du fichier
// on utilise le même nom que la source, sinon il faudrait ajouter un
// hdeclareExterne() après le hDécritFichier()
HAnnuleDéclaration("sSource")
HDécritFichier(descFic)

// on crée le fichier lié à la source ...
HCréation(sSource)

// libere les ressources
HAnnuleDéclaration("sSource")
Voila ce que je dois faire de créer des fichiers temp pour stocker mes resultats de requetes et d'appeler directement ces resultat dans une requete finale qui donne le resultat sans passer par des requetes imriquées.

Merci de m'indiquer l'erreur dans mon code SVP.
je suis vraiment coincé!Merci.

Contribution le : 24/07/2006 14:47
Créer un fichier PDF de la contribution Imprimer


Re: Pb requetes imbriquées!?
Stagiaire WDF
Inscrit:
27/06/2006 15:46
Post(s): 26
le code que j'utilise pour remplir mon fichier:
HExécuteRequête(ReqRefProduitChgtProd,hRequêteDéfaut,sSource)
HCréation(sSource)
HLitPremier(sSource)
//TANTQUE pas hEnDehors(sSource)
sSource.Clé_Produit = ReqRefProduitChgtProd.Clé_Produit
sSource.Temps = ReqRefProduitChgtProd.Total_Temps_ChgtProd
Info(sSource.Clé_Produit,sSource.Temps)
HLitSuivant(sSource)
//FIN
avec ce code je recupere que la derniere ligne de resultat et pas le total, et avec Tant que aucune valeur!

Contribution le : 24/07/2006 15:25
Créer un fichier PDF de la contribution Imprimer


Re: Pb requetes imbriquées!?
Utilisateur WDF
Inscrit:
08/03/2006 11:03
De Poitiers
Post(s): 79
bonjour,

essayez de passer par des join qui en théorie sont plus rapide

de plus dans la selection il y a 2 tables qui ne servent à rien Data_Produit et Data_chgt_Prod.

SELECT DISTINCT
RequeteRefProduit.Clé_Produit AS Clé_Produit,
RequeteRefProduit.Nbre_Bonnes AS Nbre_Bonnes,
RequeteRefProduit.Quantité_Rebuts AS Quantité_Rebuts,
RequeteRefProduit.Tps_Cycle_Stand AS Tps_Cycle_Stand,
RequeteRefProduit.Nbre_Bonnes + RequeteRefProduit.Quantité_Rebuts AS Total_Produite,
RequeteRefProduit.Tps_Bonnes AS Tps_Prod_Bonnes,
RequeteRefProduit.Tps_Rebuts AS Tps_Prod_Rebuts,
RequeteRefProduit.Tps_Rebuts + RequeteRefProduit.Tps_Bonnes AS TotatTempsProd,
ReqRefProduitChgtProd.Total_Temps_ChgtProd AS Total_Temps_ChgtProd,
ReqRefProduitDysOrg.Total_Temps_DysOrg AS Total_Temps_DysOrg,
ReqRefProduitPannes.Total_Temps_Pannes AS Total_Temps_Pannes,
(1000000* RequeteRefProduit.Quantité_Rebuts) / (RequeteRefProduit.Quantité_Rebuts + RequeteRefProduit.Nbre_Bonnes) AS PPM_Rebuts
FROM
Data_Rebuts inner join RequeteRefProduit on Data_Rebuts.Clé_Produit = RequeteRefProduit.Clé_Produit
inner join ReqRefProduitChgtProd on ReqRefProduitChgtProd.Clé_Produit = RequeteRefProduit.Clé_Produit
inner join ReqRefProduitDysOrg on ReqRefProduitDysOrg.Clé_Produit = RequeteRefProduit.Clé_Produit
inner join ReqRefProduitPannes on ReqRefProduitPannes.Clé_Produit = RequeteRefProduit.Clé_Produit

Contribution le : 24/07/2006 16:21
_________________
La sagesse est d'être fou lorsque les circonstances en valent la peine.
Créer un fichier PDF de la contribution Imprimer


Re: Pb requetes imbriquées!?
Stagiaire WDF
Inscrit:
27/06/2006 15:46
Post(s): 26
Merci, j'ai essayé avec join au lieu de Inner join mais ca ameliore pas grande chose!
l'ideal est de passer par des fichiers tempo!mais ca toujours, je suis vraiment bloqué la dessus!
Dans mon fichier tempo je recupere tjrs que la derniere ligne de ma table, en plus les fichiers n'apparaissent pas ds l'analyse, alors que dois-je faire apres pour recuperer ces resultats de calcul pour les utiliser dans une autre requetes et faire des jointures avec d'autres fichiers de l'analyse!?

Merci de votre aide.

Contribution le : 25/07/2006 10:20
Créer un fichier PDF de la contribution Imprimer


Re: Pb requetes imbriquées!?
Utilisateur WDF
Inscrit:
08/03/2006 11:03
De Poitiers
Post(s): 79
si j'ai bien compris vous utilisez une base Access ?

Contribution le : 26/07/2006 09:51
_________________
La sagesse est d'être fou lorsque les circonstances en valent la peine.
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
CompteNom   Mot de passe   Authentification
Message:


Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2