|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre du Club
![]() Développeur informatique Inscription : juillet 2009 Messages : 176 ![]() |
Salut à tous,
J'ai l'impression que c'est une situation récurrente que je rencontre avec les jointures sous HyperFile et j'aimerai bien pouvoir comprendre le comment du pourquoi... Mais je n'y arrive pas. Voici une requête toute simple : Code :
Lors de besoins très ponctuels, l'administrateur va avoir besoin d'avoir des informations supplémentaires sur ces utilisateurs (ex : qui peut faire du co-voiturage, qui a des enfants, qui boit du café, etc.). Il va donc créer une "information libre" qu'il pourra supprimer par la suite lorsqu'il aura fini son enquête. A cette fin, 2 tables supplémentaires ont été créées :
Ma requête ci dessus va donc devoir aller chercher, pour chaque champ libre, et pour chaque utilisateur, la valeur correspondante de la table "InfosSup". Seul hic : tout fonctionne bien lorsqu'il n'y a qu'une info libre à rechercher, mais quand il y a en a plusieurs la requête ne me renvoi aucun résultat ! J'en appel donc à vos connaissances car là je ne m'en sors vraiment pas... Merci... |
||
|
|
00
|
|
|
#2 |
|
Membre confirmé
![]() Arnaud BenhamdineDirecteur technique Inscription : octobre 2004 Messages : 157 ![]() |
Attention, Windev ne connait pas la syntaxe des conditions directement dans la jointure, il les traite comme une condition WHERE.
Donc la condition sera appliquée après la jointure, et élimine par conséquent les valeurs Null dans la table externe. Tu peux passer par des sous requetes. Cdlt, Arnaud. |
|
|
00
|
|
|
#3 | ||
|
Membre du Club
![]() Développeur informatique Inscription : juillet 2009 Messages : 176 ![]() |
Merci Arnaud pour ta réponse.
J'avais malheureusement essayé par des sous requêtes mais, dans ce cas, il me dit "L'alias TCL__2 est déjà utilisé" : Code :
|
||
|
|
00
|
|
|
#4 | |||
|
Membre confirmé
![]() Arnaud BenhamdineDirecteur technique Inscription : octobre 2004 Messages : 157 ![]() |
Ah... oui il me semble effectivement avoir rencontré ce pb. Si l'on fait plus d'une jointure externe sur une sous-requête, Windev ne comprend plus.
Je n'ai pas poussé plus loin par manque de temps, peut être y -a-t-il une syntaxe qui fonctionne. Pour ma part, pour contourner le pb, j'ai créé les requetes correspondant aux conditions sur la table externe. Dans ton cas, cela reviendrait à enregistrer les requetes TCL__2 et TCL__3 et à faire les jointures externes dessus. Cdlt, Arnaud. Citation:
|
|||
|
|
00
|
|
|
#5 | ||
|
Membre du Club
![]() Développeur informatique Inscription : juillet 2009 Messages : 176 ![]() |
Aie... Je me doutais d'un truc pareil...
Le problème c'est que le principe des informations libres est que l'utilisateur puisse en créer/supprimer lorsqu'il le veut. Ça me paraît donc pas très "propre" de créer, en même temps que l'utilisateur créé une information libre, la requête correspondante et à chaque fois de réadapter mon code dessus. En plus il ne me semble pas qu'on puisse utiliser une jointure avec une requête dans une autre requête (à la même manière qu'une vue) ? Peux-tu me le confirmer car je ne m'y connais pas assez... J'ai essayé et il ne reconnait pas mes requêtes : Code :
Je vais essayer de creuser cette piste on verra bien. Merci en tout cas |
||
|
|
00
|
|
|
#6 | ||||||
|
Membre du Club
![]() Développeur informatique Inscription : juillet 2009 Messages : 176 ![]() |
Bon... La solution des vues en solution de secours marche bien.
Je ne sais pas si ça sera bien utile à quelqu'un mais voilà au cas où : Création de la requête de base : Code :
Code :
Code :
rSQL=ChaîneConstruit(rSQL,sChampSup,sJointSup) Code :
Je posterai une autre solution "plus propre" si je trouve d'ici là. Merci encore pour ton aide. |
||||||
|
|
00
|
|
|
#7 | |
|
Membre émérite
![]() Inscription : mars 2002 Messages : 825 ![]() |
Citation:
Encore mieux en version 16. |
|
|
|
00
|
|
|
#8 |
|
Membre confirmé
![]() Arnaud BenhamdineDirecteur technique Inscription : octobre 2004 Messages : 157 ![]() |
Ah non.
Nous avons fait des tests, je n'ai plus tous les résultats en tête, mais sur ce point précis (condition dans la jointure), ça ne fonctionnait ni en 15 ni en 16 en HF C/S. Nous n'avons pas fait de tests en v14. |
|
|
00
|
|
|
#9 | |
|
Membre du Club
![]() Développeur informatique Inscription : juillet 2009 Messages : 176 ![]() |
Citation:
Il me semblait avoir posté dans la bonne section : Environnements de développement > WinDev > HyperFileSQL ? Quoi qu'il en soit la solution de rafistolage marche assez bien au final, et assez vite avec des fichiers de 200 enregistrements (pour le moment). Si le client m'avait laissé le choix, je lui aurait installé un véritable serveur SQL
|
|
|
|
00
|
|
|
#10 |
|
Membre émérite
![]() Inscription : mars 2002 Messages : 825 ![]() |
C'est moi qui me suis trompé, mon message du dessus n'est pas du tout correct, je viens d'ailleurs d'apporter la remarque sur l'aide de PCSoft (en annotation). Les lignes externes de la jointure ne sont pas visibles dès qu'on met une condition dans la jointure.
J'étais pourtant persuadé d'avoir fait le test. |
|
|
00
|
|
|
#11 |
|
Membre du Club
![]() Développeur informatique Inscription : juillet 2009 Messages : 176 ![]() |
Hélas c'est des cas comme celui là qui prouve certaines limites du langages... (Sans vouloir dénigrer WinDev, langage que je trouve intéressant dans sa capacité à développer rapidement des applications).
|
|
|
00
|
|
|
#12 |
|
Membre émérite
![]() Inscription : mars 2002 Messages : 825 ![]() |
Sans rentrer dans une nouvelle polémique de "pour ou contre" windev, un simple constat : la partie la plus sensible de windev, c'est Hyperfile. C'est de là que viennent la majorité des bugs Windev que j'ai rencontré.
C'est vraiment le parent pauvre de PCSoft, j'en veux pour preuve un Bug signalé en 2008 toujours pas réglé. (trois fois rien, juste un select SUM(Champ), sans GROUP BY, qui me renvoie deux lignes...) |
|
|
00
|
|
|
#13 | ||
|
Membre confirmé
![]() Arnaud BenhamdineDirecteur technique Inscription : octobre 2004 Messages : 157 ![]() |
Citation:
Personnellement, ça m'étonne, mais nous n'avons fait des tests que sur les v15 et v16. Citation:
Cdlt, Arnaud. |
||
|
|
00
|
|
|
#14 | |||||||
|
Membre confirmé
![]() Arnaud BenhamdineDirecteur technique Inscription : octobre 2004 Messages : 157 ![]() |
Une vue c'est l'ancêtre d'une source de données dans Windev.
C'est pour ça que je te disais d'utiliser une requete. Mais tu as raison, c'est pour pallier l'incapacité de Windev à exécuter correctement le SQL qu'on est obligé de passer par des bidouilles pareilles.. En sachant de plus que d'après nos tests, le comportement sur les jointures externes n'est pas le même entre WD15 et WD16, et entre HF CLassic et HF C/S ! Donc méfiance à chaque montée de version... Autre solution : opter pour un vrai SGBD (PostgreSQL, MS SQL Server ou Oracle). Citation:
|
|||||||
|
|
00
|
|
|
#15 |
|
Membre actif
![]() Patrick FREZE Développeur informatique Inscription : avril 2010 Messages : 123 ![]() |
Bonjour,
Je réactive ce vieux post pour savoir si quelqu'un a retesté les jointures externes avec conditions en WD17. Dans la doc des nouveautés 17, PC Soft affirme avoir "optimisé" les conditions dans la clause "ON". Notamment, est-ce que les lignes externes apparaissent bien ? (et donc la condition n'est plus considérée comme un WHERE) Merci de votre retour d'expérience. Patrick |
|
|
00
|
|
|
#16 | |
|
Membre confirmé
![]() Arnaud BenhamdineDirecteur technique Inscription : octobre 2004 Messages : 157 ![]() |
Oui nous avons testé sur la 17 61h et malheureusement rien n'est encore réglé.
Il n'y a aucun changement dans les résultats de nos tests de conformité SQL. La dernière mise à jour 61h a préparé le terrain au niveau de l'éditeur de requêtes et une prochaine mise à jour (quand ? on ne sait pas) est apparemment prévue pour modifier le comportement d'Hyperfile. En espérant que ce soit enfin réglé... Cdlt, Arnaud. Citation:
|
|
|
|
00
|
|
|
#17 |
|
Membre actif
![]() Patrick FREZE Développeur informatique Inscription : avril 2010 Messages : 123 ![]() |
Merci Arnaud.
Patrick |
|
|
00
|
|
|
#18 | ||
|
Membre émérite
![]() Inscription : mars 2002 Messages : 825 ![]() |
Réponse de Jérôme Aerts (celui qui présente les TDF) à la question
"quand comptez vous régler les bugs - requête SUM qui renvoie plusieurs lignes - Jointures externes qui ne renvoient pas toutes les lignes (donc ce post)" Citation:
Ah si, la phrase suivante dans l'e-mail c'était : Citation:
A chacun d'en tirer ses conclusions. |
||
|
|
00
|
|
|
#19 |
|
Membre émérite
![]() Inscription : mars 2002 Messages : 825 ![]() |
Pour information :
la version 17 - 61h, sortie cette nuit (donc datée du 15 fév.) ne règle aucun des deux problèmes. |
|
|
00
|
|
|
#20 |
|
Membre confirmé
![]() Arnaud BenhamdineDirecteur technique Inscription : octobre 2004 Messages : 157 ![]() |
Non, c'est "apparemment" annoncé pour une prochaine mise à jour.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com