Skip to content

Différence de tri entre {id_patate IN ...} et {id_patate?}

Avec un critère {id_patate IN ...}, le compilateur ajoute un ORDER BY FIELD(id_patate,...) à la requête, du coup les résultats sont triés dans l'ordre du IN : joie. En revanche, avec un critère optionnel {id_patate?} et un array dans l'environnement, ça fait bien un IN dans la requête par contre il n'y a pas ORDER BY et on perd l'ordre de tri : tristesse.

Dans les 2 cas, on devrait avoir cet ORDER BY FIELD fort pratique.

Exemples :

<BOUCLE_joie(ARTICLES){id_article IN 3,1,2}>

SELECT articles.id_article, articles.lang, articles.titre
FROM spip_articles AS `articles`
WHERE (articles.statut = 'publie')
	AND ((articles.id_article  IN (3,1,2)))
ORDER BY FIELD(articles.id_article,3,1,2)

<BOUCLE_tristesse(ARTICLES){id_article?}>

SELECT articles.id_article, articles.lang, articles.titre
FROM spip_articles AS `articles`
WHERE (articles.statut = 'publie')
	AND ((articles.id_article  IN (3,1,2)))

Testé en SPIP 3.1.3

Modification effectuée par JamesRezo