Bonjour cualex,
Si vous utilisé une base de données autre que Hyper File suivez les conseilles de Veronica.
Ce type de Sql même si la syntaxe change en WinDev n'est pas impossible, en théorie
Je dis en Théorie car c'est du ressort des alias.
Comme WinDev gère les Alias cela devrait être possible, Encore faut-il créer l?Halias
Tu veux récupérer à partir du fichier
Match les adversaires avec les nom des utilisateurs.
Mais tu veux récupérer les de adversaire1 et aussi de adversaire2 ce qui sous entend que tu veux faire deux recherches par ligne.
Je vais donc te conseiller une méthode manuelle.
Citation :
match avec differents champs dont
num --> clef primaire
nom_match
adversaire1 (int) --> utilisateur 1
adversaire2 (int) --> utilisateur 2
date_match
utilisateur avec différents champs dont
num --> clef primaire
nom --> nom utilisateur
Requête à traduire :
Citation :
select m.date_match,m.nom_match,u1.nom,u2.nom from match as m,utilisateur as u1,utilisateur as u2 where m.adversaire1=u1.num and m.adversaire2=u2.num order by m.date_match desc
Nous allons commencer par créer un alias sur la table Utilisateur
Pour le moment une méthode un peu rude
U2 est une Source de Données
Rsl est une Source de Données
Sql est une Chaine
Si pas HALias(Utilisateur,U2) = Vrai Alors //Création de l?alias
Erreur(HErreurInfo())
Retour
Fin
//On copie le fichier pour créer l?alias
SI PAS fCopieFichier(<Fichier source>,<Répertoire Destination>+ "\U2.FIC") Alors
Erreur(ErreurInfo())
Retour
Fin
Sql =
[
SELECT match.date_match as DateDuMatch, match.nom_match As NomDuMatch,
Utilisateur.nom as Adversaire1, U2.nom as Adversaire2
FROM match, utilisateur, U2
WHERE match.adversaire1=utilisateur.num
AND macth.Adversaire2=U2.num
ORDER BY match.date_match desc
]
Si pas HexecuteRequeteSql(Rsl,HrequeteDefaut,Sql) Alors
Erreur(HErreurInfo())
Retour
Fin
Code saisi à la volée, des erreurs peuvent exister.
Ce code peut être optimisé en remplacent l?Alias par le résultat d?une requête ou peut-être même du vue sur le fichier Utilisateur exemple :
Si pas HexecuteRequêteSql(U2,HRequêteDefaut, "SELECT * FROM utilisateur") Alors
Erreur(HErreurInfo())
Retour
Fin
Ceci reste dans son ensemble théorique et à tester.
Nous tenir au courant.