8768 sujets

Développement web côté serveur, CMS

Bonsoir,

J'ai un petit souci concernant ma requête SQL. J'ai fait une requête imbriquée en utilisant IN, dans ce IN j'ai une requête avec un Order by, cette requête trie bien mes informations, cependant la requête principale re-mélange mes informations.

Sauriez-vous comment régler mon problème ?

Merci !

Ma requête en entier :

SELECT * FROM users WHERE idUSer IN ( SELECT idRecipientMsg FROM private_messages WHERE idAuthorMsg = 11 ORDER BY sendDateMsg DESC);


Résultat de ma requête :

upload/1615917032-81889-capturedaeacran2021-03-16aa18.png

Résultat de ma sous-requête lancée seule :

upload/1615917151-81889-capturedaeacran2021-03-16aa18.png
Modifié par heraclys (16 Mar 2021 - 18:53)
Modérateur
Hello,

Quel intérêt d'ordonner une séquence dans IN ? "In" permet d'éviter une redondance d'écriture. C'est l'équivalent de :

# ....
WHERE 
    field = 'data'
OR 
    field = 'donnee'
OR 
    field = 'quelquechose'
OR 
    field = 'etc'

Modifié par niuxe (16 Mar 2021 - 21:19)
Salut,

utilise FIELD() pour ça

exemple :
SELECT name, description, ...
FROM ...
WHERE id IN([ids, any order])
ORDER BY FIELD(id, [ids in order])

Modifié par JENCAL (23 Mar 2021 - 16:11)
Modérateur
Merci Jencal pour ton intervention. Je ne connaissais pas FIELD. Cependant, attention FIELD() est apparemment une instruction mysql et de ce fait, ce n'est pas standard.