PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile (précédentes versions) → Mot , Inattendu dans un couple dans une requête SQL
Mot , Inattendu dans un couple dans une requête SQL
Débuté par Camin Mattéo, 22 nov. 2021 15:11 - 3 réponses
Posté le 22 novembre 2021 - 15:11
Bonjour, je cherchais à faire une requête particulière dont la seule solution "simple" me semblait être :
SELECT Difficulté.Couleur
FROM Entrainement
INNER JOIN Exercice ON Entrainement.IDEntrainement=Exercice.IDEntrainement
AND Exercice.IDExercice IN
(SELECT Exercice.IDDifficulté
FROM Exercice
WHERE (Exercice.IDEntrainement, Exercice.Intensité) IN
(SELECT Exercice.IDEntrainement, MAX(Exercice.Intensité)
FROM Exercice
GROUP BY Exercice.IDEntrainement))
INNER JOIN Difficulté ON Exercice.IDDifficulté=Difficulté.IDDifficulté

J'ai donc un avertissement "Mot , Inattendu" à la ligne 8 entre "Exercice.IDEntrainement" et "Exercice.Intensité). Je n'arrive pas à trouver d'information sur l'utilisation de Couple via SQL sur WinDev. J'ai essayé avec un autre séparateur ';' sans succès.
J'ai pu faire fonctionner la requête sur un serveur MySQL à part, même si sur le projet j'utilise HFSQL ( je ne sais pas s'il s'agit de la cause du problème ).
Cordialement
Membre enregistré
3 311 messages
Popularité : +93 (137 votes)
Posté le 22 novembre 2021 - 18:21
Ton problème c'est de ne pas savoir lire l'aide
La réponse y est facilement lisible
Je te laisse chercher
Posté le 27 novembre 2021 - 13:44
Et bien, j'ai essayé de suivre votre conseil, j'ai essayé de fouiller la documentation. Et je confirme que je ne trouve rien sur l'utilisation de couple sur WinDev ( de la forme "WHERE ( Attribut1, Attribut2 ) IN " ). Cependant quand je remplace la virgule entre les Attribut par & je n'ai plus d'avertissement, MAIS la requête ne me renvoie plus le résultat attendu.
De plus, si je tente d'effectuer la requête directement via le centre de contrôle HFSQL, celle-ci ne s'exécute pas et j'obtiens l'erreur "Erreur dans le code SQL de la requête <RequêteSansNom1>. Initialisation de la requête impossible.
Fichier Exercice inconnu
Erreur détectée :
FROM >>>>Exercice<<<< " que ce soit avec la virgule ou le &.

Je voudrais préciser que je ne souhaite PAS faire :
SELECT Difficulté.IDDifficulté,Difficulté.Seuil,Difficulté.Couleur
FROM Entrainement
INNER JOIN Exercice ON Entrainement.IDEntrainement=Exercice.IDEntrainement
AND Exercice.IDExercice IN
(SELECT Exercice.IDExercice
FROM Exercice
WHERE Exercice.IDEntrainement IN
(SELECT Exercice.IDEntrainement, MAX(Exercice.Intensité)
FROM Exercice
GROUP BY Exercice.IDEntrainement))
AND Exercice.Intensité IN
(SELECT Exercice.IDEntrainement, MAX(Exercice.Intensité)
FROM Exercice
GROUP BY Exercice.IDEntrainement))
INNER JOIN Difficulté ON Exercice.IDDifficulté=Difficulté.IDDifficulté

Puisque je n'obtiendrais pas le résultat souhaité :
(SELECT Exercice.IDEntrainement, MAX(Exercice.Intensité)
FROM Exercice
GROUP BY Exercice.IDEntrainement))

Cette sous-requête me permet de récupérer l'exercice le plus intense de chaque entrainement, et donc si j'utilise AND au lieu d'un couple je prends le risque de tomber sur un exercice qui possède la même intensité que l'exercice le plus intense d'un entrainement mais sans qu'il soit lui-même un de ces exercices

Donc, je suppose que les couples ne sont pas supportés.
Aussi, je précise encore une fois : la requête que j'ai mise dans le premier poste fonctionne bien quand je l'utilise avec un serveur MySQL.
Est-ce qu'il y a une solution pour utiliser un couple que je n'ai pas trouver ? Ou est-ce que vous voyez une alternative à cette requête qui serait fonctionnelle avec HFSQL ? Ou n'importe quelle autre remarque ?
Membre enregistré
3 311 messages
Popularité : +93 (137 votes)
Posté le 27 novembre 2021 - 19:29
Le problème c'est les sous requête qui ne sont pas acceptés