Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Utilisation de FIND_IN_SET

5 réponses
Avatar
ShadowFox
Bonjour,

J'ai une requête qui va chercher des articles en fonction d'id que je fourni en paramètre via une liste (ordonnée).
Mon problème est que le resultat de cette recherche ne s'affiche pas dans l'ordre que j'ai donné à la liste...

Exemple je lui demande de m'afficher 1-3-6-2-4-5 et il m'affiche 1-2-3-4-5-6 bien qu'aucun ordre de tri ne soit demandé.
Je n'ai pas moyen de reclasser ces éléments après la requête car la liste fournie (ordonnée) vient d'une action du visiteur.

En cherchant sur le net j'ai trouvé des gens qui avaient la même problèmatique que moi sous mysql ou oracle, des solutions leur ont été apportée que j'ai donc essayé d'appliqué à mon problème sous HF SQL.

La solution correspondant exactement à mes souhaits est une requête dont l'ORDER BY utilise le FIND_IN_SET (vérification faite, cette instruction SQL est apparue dans la version 19 youpi !)

Je reproduit donc la requête (sous l'éditeur WD SQL pour plus de simplicité pour tester) qui donne donc ceci (en simplifié)

SELECT Articles.Idproduit AS Idproduit
Articles.Nom AS Nom
FROM Articles
WHERE Articles.IDProduit IN ('1','3','6','2','4','5')
ORDER BY FIND_IN_SET(Articles.Idproduit, '1,3,6,2,4,5')


Réponse : Initialisation impossible : Rubrique de tri absente de la Clause Select...

J'ai essayé en mettant les '' entre chaque élément du FIND_IN_SET également, sachant que sans cet ORDER BY la requête fonctionne bien mais juste pas ordonnée comme la liste que je fourni en paramètre ...

C'est pourtant exactement ce qui a été utilisé pour répondre aux problèmes que j'ai trouvé identiques aux miens.
Un autre solution mettait le INSTR ou FIELD (dans les mêmes conditions) et les résultats sont les mêmes pour moi... impossible de faire fonctionner cette requête.

Si quelqu'un peut m'éclairer sur l'erreur que je commets.. Merci bien.

Cordialement,

5 réponses

Avatar
André STASZEWSKI
Bonjour,

J'ai une requête qui va chercher des articles en fonction d'id que je fourni
en paramètre via une liste (ordonnée).
Mon problème est que le resultat de cette recherche ne s'affiche pas dans
l'ordre que j'ai donné à la liste...

Exemple je lui demande de m'afficher 1-3-6-2-4-5 et il m'affiche 1-2-3-4-5-6
bien qu'aucun ordre de tri ne soit demandé.
Je n'ai pas moyen de reclasser ces éléments après la requête car la liste
fournie (ordonnée) vient d'une action du visiteur.

En cherchant sur le net j'ai trouvé des gens qui avaient la même
problèmatique que moi sous mysql ou oracle, des solutions leur ont été
apportée que j'ai donc essayé d'appliqué à mon problème sous HF SQL.

La solution correspondant exactement à mes souhaits est une requête dont
l'ORDER BY utilise le FIND_IN_SET (vérification faite, cette instruction SQL
est apparue dans la version 19 youpi !)

Je reproduit donc la requête (sous l'éditeur WD SQL pour plus de simplicité
pour tester) qui donne donc ceci (en simplifié)

SELECT Articles.Idproduit AS Idproduit
Articles.Nom AS Nom
FROM Articles
WHERE Articles.IDProduit IN ('1','3','6','2','4','5')
ORDER BY FIND_IN_SET(Articles.Idproduit, '1,3,6,2,4,5')


Réponse : Initialisation impossible : Rubrique de tri absente de la Clause
Select...

J'ai essayé en mettant les '' entre chaque élément du FIND_IN_SET également,
sachant que sans cet ORDER BY la requête fonctionne bien mais juste pas
ordonnée comme la liste que je fourni en paramètre ...

C'est pourtant exactement ce qui a été utilisé pour répondre aux problèmes
que j'ai trouvé identiques aux miens.
Un autre solution mettait le INSTR ou FIELD (dans les mêmes conditions) et
les résultats sont les mêmes pour moi... impossible de faire fonctionner
cette requête.

Si quelqu'un peut m'éclairer sur l'erreur que je commets.. Merci bien.

Cordialement,



Bonjour,
Comme le msg d'erreur demande une rubrique de tri, peut être quand la
mettant, après ça marchera ?

--
Cordialement,
André STASZEWSKI
http://www.SoftSolution.fr
Pour me contacter, cliquez ici :
http://cerbermail.com/?Z8IP9sIahR



---
Ce courrier électronique ne contient aucun virus ou logiciel malveillant parce que la protection avast! Antivirus est active.
http://www.avast.com
Avatar
shadowfox
Le dimanche 06 Juillet 2014 à 00:55 par André STASZEWSKI :
Bonjour,

J'ai une requête qui va chercher des articles en fonction d'id que je
fourni
en paramètre via une liste (ordonnée).
Mon problème est que le resultat de cette recherche ne s'affiche pas
dans
l'ordre que j'ai donné à la liste...

Exemple je lui demande de m'afficher 1-3-6-2-4-5 et il m'affiche 1-2-3-4-5-6
bien qu'aucun ordre de tri ne soit demandé.
Je n'ai pas moyen de reclasser ces éléments après la
requête car la liste
fournie (ordonnée) vient d'une action du visiteur.

En cherchant sur le net j'ai trouvé des gens qui avaient la même
problèmatique que moi sous mysql ou oracle, des solutions leur ont
été
apportée que j'ai donc essayé d'appliqué à mon
problème sous HF SQL.

La solution correspondant exactement à mes souhaits est une
requête dont
l'ORDER BY utilise le FIND_IN_SET (vérification faite, cette
instruction SQL
est apparue dans la version 19 youpi !)

Je reproduit donc la requête (sous l'éditeur WD SQL pour plus de
simplicité
pour tester) qui donne donc ceci (en simplifié)

SELECT Articles.Idproduit AS Idproduit
Articles.Nom AS Nom
FROM Articles
WHERE Articles.IDProduit IN ('1','3','6','2','4','5')
ORDER BY FIND_IN_SET(Articles.Idproduit, '1,3,6,2,4,5')


Réponse : Initialisation impossible : Rubrique de tri absente de la
Clause
Select...

J'ai essayé en mettant les '' entre chaque élément du
FIND_IN_SET également,
sachant que sans cet ORDER BY la requête fonctionne bien mais juste pas
ordonnée comme la liste que je fourni en paramètre ...

C'est pourtant exactement ce qui a été utilisé pour
répondre aux problèmes
que j'ai trouvé identiques aux miens.
Un autre solution mettait le INSTR ou FIELD (dans les mêmes conditions)
et
les résultats sont les mêmes pour moi... impossible de faire
fonctionner
cette requête.

Si quelqu'un peut m'éclairer sur l'erreur que je commets.. Merci bien.

Cordialement,




Bonjour,
Comme le msg d'erreur demande une rubrique de tri, peut être quand la
mettant, après ça marchera ?

--
Cordialement,
André STASZEWSKI
http://www.SoftSolution.fr
Pour me contacter, cliquez ici :
http://cerbermail.com/?Z8IP9sIahR



---
Ce courrier électronique ne contient aucun virus ou logiciel malveillant
parce que la protection avast! Antivirus est active.
http://www.avast.com


Bonjour,

La rubrique Idproduit est déjà dans le SELECT, d'où mon incompréhension.

Cordialement,
Avatar
JeAn-PhI
ShadowFox avait prétendu :
Bonjour,

J'ai une requête qui va chercher des articles en fonction d'id que je fourni
en paramètre via une liste (ordonnée).
Mon problème est que le resultat de cette recherche ne s'affiche pas dans
l'ordre que j'ai donné à la liste...

Exemple je lui demande de m'afficher 1-3-6-2-4-5 et il m'affiche 1-2-3-4-5-6
bien qu'aucun ordre de tri ne soit demandé.
Je n'ai pas moyen de reclasser ces éléments après la requête car la liste
fournie (ordonnée) vient d'une action du visiteur.

En cherchant sur le net j'ai trouvé des gens qui avaient la même
problèmatique que moi sous mysql ou oracle, des solutions leur ont été
apportée que j'ai donc essayé d'appliqué à mon problème sous HF SQL.

La solution correspondant exactement à mes souhaits est une requête dont
l'ORDER BY utilise le FIND_IN_SET (vérification faite, cette instruction SQL
est apparue dans la version 19 youpi !)

Je reproduit donc la requête (sous l'éditeur WD SQL pour plus de simplicité
pour tester) qui donne donc ceci (en simplifié)

SELECT Articles.Idproduit AS Idproduit
Articles.Nom AS Nom
FROM Articles
WHERE Articles.IDProduit IN ('1','3','6','2','4','5')
ORDER BY FIND_IN_SET(Articles.Idproduit, '1,3,6,2,4,5')


Réponse : Initialisation impossible : Rubrique de tri absente de la Clause
Select...

J'ai essayé en mettant les '' entre chaque élément du FIND_IN_SET également,
sachant que sans cet ORDER BY la requête fonctionne bien mais juste pas
ordonnée comme la liste que je fourni en paramètre ...

C'est pourtant exactement ce qui a été utilisé pour répondre aux problèmes
que j'ai trouvé identiques aux miens.
Un autre solution mettait le INSTR ou FIELD (dans les mêmes conditions) et
les résultats sont les mêmes pour moi... impossible de faire fonctionner
cette requête.

Si quelqu'un peut m'éclairer sur l'erreur que je commets.. Merci bien.

Cordialement,



bonjour,

La fonction FIND_IN_SET retourne la position d'une chaîne dans une
liste de valeurs.

je ne vois pas pourquoi votre code fonctionnerait

--
Cordialement JeAn-PhI
Avatar
phig
Le 07/07/2014 08:00, shadowfox a écrit :
Le dimanche 06 Juillet 2014 à 00:55 par André STASZEWSKI :
Bonjour,

J'ai une requête qui va chercher des articles en fonction d'id que je
fourni
en paramètre via une liste (ordonnée).
Mon problème est que le resultat de cette recherche ne s'affiche pas
dans
l'ordre que j'ai donné à la liste...

Exemple je lui demande de m'afficher 1-3-6-2-4-5 et il m'affiche 1-2-3-4-5-6
bien qu'aucun ordre de tri ne soit demandé.
Je n'ai pas moyen de reclasser ces éléments après la
requête car la liste
fournie (ordonnée) vient d'une action du visiteur.

En cherchant sur le net j'ai trouvé des gens qui avaient la même
problèmatique que moi sous mysql ou oracle, des solutions leur ont
été
apportée que j'ai donc essayé d'appliqué à mon
problème sous HF SQL.

La solution correspondant exactement à mes souhaits est une
requête dont
l'ORDER BY utilise le FIND_IN_SET (vérification faite, cette
instruction SQL
est apparue dans la version 19 youpi !)

Je reproduit donc la requête (sous l'éditeur WD SQL pour plus de
simplicité
pour tester) qui donne donc ceci (en simplifié)

SELECT Articles.Idproduit AS Idproduit
Articles.Nom AS Nom
FROM Articles
WHERE Articles.IDProduit IN ('1','3','6','2','4','5')
ORDER BY FIND_IN_SET(Articles.Idproduit, '1,3,6,2,4,5')


Réponse : Initialisation impossible : Rubrique de tri absente de la
Clause
Select...

J'ai essayé en mettant les '' entre chaque élément du
FIND_IN_SET également,
sachant que sans cet ORDER BY la requête fonctionne bien mais juste pas
ordonnée comme la liste que je fourni en paramètre ...

C'est pourtant exactement ce qui a été utilisé pour
répondre aux problèmes
que j'ai trouvé identiques aux miens.
Un autre solution mettait le INSTR ou FIELD (dans les mêmes conditions)
et
les résultats sont les mêmes pour moi... impossible de faire
fonctionner
cette requête.

Si quelqu'un peut m'éclairer sur l'erreur que je commets.. Merci bien.

Cordialement,




Bonjour,
Comme le msg d'erreur demande une rubrique de tri, peut être quand la
mettant, après ça marchera ?

--
Cordialement,
André STASZEWSKI
http://www.SoftSolution.fr
Pour me contacter, cliquez ici :
http://cerbermail.com/?Z8IP9sIahR



---
Ce courrier électronique ne contient aucun virus ou logiciel malveillant
parce que la protection avast! Antivirus est active.
http://www.avast.com


Bonjour,

La rubrique Idproduit est déjà dans le SELECT, d'où mon incompréhension.

Cordialement,





Salut!

le find_in_set fonction en select, pas en order. il renvoie l'ordre dans
la liste ou zéro si pas trouvé.

SELECT Articles.Idproduit AS Idproduit, FIND_IN_SET(Articles.Idproduit,
'1,3,6,2,4,5') as mon_ordre,
Articles.Nom AS Nom
FROM Articles
WHERE Articles.IDProduit IN ('1','3','6','2','4','5')
ORDER BY mon_ordre

devrait fonctionner ...
my 2 cents more...
Avatar
shadowfox
Le lundi 07 Juillet 2014 à 12:21 par phig :
Le 07/07/2014 08:00, shadowfox a écrit :
Le dimanche 06 Juillet 2014 à 00:55 par André STASZEWSKI :
Bonjour,

J'ai une requête qui va chercher des articles en fonction d'id que je
fourni
en paramètre via une liste (ordonnée).
Mon problème est que le resultat de cette recherche ne s'affiche pas
dans
l'ordre que j'ai donné à la liste...

Exemple je lui demande de m'afficher 1-3-6-2-4-5 et il m'affiche 1-2-3-4-5-6
bien qu'aucun ordre de tri ne soit demandé.
Je n'ai pas moyen de reclasser ces éléments après la
requête car la liste
fournie (ordonnée) vient d'une action du visiteur.

En cherchant sur le net j'ai trouvé des gens qui avaient la
même
problèmatique que moi sous mysql ou oracle, des solutions leur ont
été
apportée que j'ai donc essayé d'appliqué à mon
problème sous HF SQL.

La solution correspondant exactement à mes souhaits est une
requête dont
l'ORDER BY utilise le FIND_IN_SET (vérification faite, cette
instruction SQL
est apparue dans la version 19 youpi !)

Je reproduit donc la requête (sous l'éditeur WD SQL pour plus
de
simplicité
pour tester) qui donne donc ceci (en simplifié)

SELECT Articles.Idproduit AS Idproduit
Articles.Nom AS Nom
FROM Articles
WHERE Articles.IDProduit IN ('1','3','6','2','4','5')
ORDER BY FIND_IN_SET(Articles.Idproduit, '1,3,6,2,4,5')


Réponse : Initialisation impossible : Rubrique de tri absente de la
Clause
Select...

J'ai essayé en mettant les '' entre chaque élément du
FIND_IN_SET également,
sachant que sans cet ORDER BY la requête fonctionne bien mais juste
pas
ordonnée comme la liste que je fourni en paramètre ...

C'est pourtant exactement ce qui a été utilisé pour
répondre aux problèmes
que j'ai trouvé identiques aux miens.
Un autre solution mettait le INSTR ou FIELD (dans les mêmes
conditions)
et
les résultats sont les mêmes pour moi... impossible de faire
fonctionner
cette requête.

Si quelqu'un peut m'éclairer sur l'erreur que je commets.. Merci
bien.

Cordialement,





Bonjour,
Comme le msg d'erreur demande une rubrique de tri, peut être quand la
mettant, après ça marchera ?

--
Cordialement,
André STASZEWSKI
http://www.SoftSolution.fr
Pour me contacter, cliquez ici :
http://cerbermail.com/?Z8IP9sIahR



---
Ce courrier électronique ne contient aucun virus ou logiciel
malveillant
parce que la protection avast! Antivirus est active.
http://www.avast.com



Bonjour,

La rubrique Idproduit est déjà dans le SELECT, d'où mon
incompréhension.

Cordialement,






Salut!

le find_in_set fonction en select, pas en order. il renvoie l'ordre dans
la liste ou zéro si pas trouvé.

SELECT Articles.Idproduit AS Idproduit, FIND_IN_SET(Articles.Idproduit,
'1,3,6,2,4,5') as mon_ordre,
Articles.Nom AS Nom
FROM Articles
WHERE Articles.IDProduit IN ('1','3','6','2','4','5')
ORDER BY mon_ordre

devrait fonctionner ...
my 2 cents more...


Bonjour,

Merci beaucoup de tes lumières, je viens de tester et cela fonctionne à merveille !
Pour répondre à un message juste au dessus, le FIND_IN_SET comme je l'ai présenté dans l'op est tel que je l'ai trouvé sur divers forum concernant Mysql, donc peut être que cela fonctionne sur Mysql mais pas en Wlanguage.

En tout cas, merci beaucoup de la réponse donnée car j'avoue que cela m'enlève une bonne épine du pied, je ne comprenais pas pourquoi en passant une liste ordonnée dans le IN la requête sortait dans un autre ordre, finalement le FIND_IN_SET m'a réglé le souci (merci la V19 de windev!)

Merci encore
Cordialement,