03/05/2024
Windev et les Api WindowsNb de visiteurs en ligne : 1
>> Introduction << >> Codes et Forum << >> Download <<


Rubrique : 3 - HyperFile       Sujet : Requête avec jointure
Auteur Message
 jpl Posté le : 05/02/2003 11:27:12


Bonjour
Je fais une requete sur 3 tables (donc 2 jointures) en SQL sur des fichiers HF. Je trouve le résultat très long (environ 1s pour 2 lignes de résultat).
Je connais plus le SQL que les fonctions H...
Sous Oracle, ca marche nickel et c'est très rapide.
Comment faire avec une fonction H ? Avec ou sans SQL ?
J'utilise 5.5 et ces tests ont été fait en version monoposte.
Merci.


 Dim Posté le : 06/02/2003 12:24:31


Salut

Le temps de réponse ne dépend pas toujours du nombre d'enregistrements retourné mais plutot du nombre d'enr. à lire et des clés de tes fichiers.

As-tu testé les vues ?


 jpl Posté le : 06/02/2003 13:41:57


Hello
Ce ne sont que des données de test donc il n'y a que 2 enregistrements.
Les clés sont des entiers et entiers courts. Et comme je veux tous les enregistrements, il n'y a pas d'autres conditions que les jointures.
Non je n'ai pas essayé les vues. Comment crée-t-on une vue sur 3 tables ?
Merci.

 Dim Posté le : 06/02/2003 14:17:38


Re

1 sec pour 2 enregistrements...  

tu dois avoir un problème dans ton code...

faudrait donner la structure de tes fichiers, on y verra peut-être plus clair.

 °¨¨ JL ¨¨° Posté le : 06/02/2003 15:03:52


Salut,

Pour les ordres HF tu peux faire un truc du style :

Soit un fichier A principal qui contient par ex les ordi du réseau, dans ce fic, tu as une clé 'étrangère' pointant sur un fichier B contenant des cartes vidéo, et une autre clé pointant sur un fichier C contenant les modèles de processeurs.

Ce qui nous donne :
  - Fichier A
    Clé principale unique : IDPoste n° de poste par ex
    ../..
    Clé pointant vers Fichier B qui correspond à l'id de la carte vidéo : IDCarte_Vidéo
    Clé pointant vers Fichier C qui correspond à l'id du processeur : IDProcesseur

  - Fichier B
    Clé principale unique : Id de la carte vidéo IDVidéo

  - Fchier C
    Clé principale unique : Id du proc IDProc

Donc quand tu fais un down du fichier A tu vas faire un truc comme cela :

hlitpremier( Fichier A, IDPoste )
tanque pas h.endehors

  // recherche de la carte vidéo
  hlitrecherche( Fichier B, IDVidéo , IDCarte_Vidéo )
  si h.trouve alors // tu prend les données que tu veux
    ../..
  fin

  // recherche du proceseur
  hlitrecherche( Fichier C, IDProc , IDProcesseur )
  si h.trouve alors
    ../..
  fin

  // affichage des donnée dans une table mémoire par ex
  // ou traitement de ce que tu veux
  ../..

  hlitsuivant( Fichier A, IDposte)
fin

en espèrant que cela répond à tes interrogations...  

A+


 jpl Posté le : 06/02/2003 16:16:23


Je vais essayer ta solution JL
Merci à tous.  

>> Poster un message dans un NOUVEAU sujet.
>> Poster un message dans ce sujet.