Jointure provoquée par deux critères id_mot
La boucle suivante génère une requête erronée :
#ID_ARTICLE -
Requête SQL générée :
SELECT articles.date, articles.id_article, articles.lang, articles.titre FROM spip_articles AS `articles` INNER JOIN spip_mots_liens AS L2 ON ( L2.id_objet = articles.id_article AND L2.objet='article') WHERE (articles.statut = 'publie') AND NOT((articles.id_article IN ( SELECT L2.id_objet AS id FROM spip_mots_liens AS `L2` INNER JOIN spip_mots_liens AS L1 ON ( L1.id_objet = articles.id_article ) WHERE (L1.id_mot = 3) AND L1.objet='article' AND L2.objet='article'))) AND (L2.id_mot = 261) GROUP BY articles.id_article ORDER BY articles.date DESC LIMIT 0,6
Ce qui plante avec : Erreur SQL 1054 - Unknown column 'articles.id_article' in 'on clause'
La requête devrait être (il me semble) :
SELECT articles.date, articles.id_article, articles.lang, articles.titre FROM spip_articles AS articles
INNER JOIN spip_mots_liens AS L2 ON ( L2.id_objet = articles.id_article AND L2.objet='article') WHERE (articles.statut = 'publie') AND NOT((articles.id_article IN ( SELECT L2.id_objet AS id FROM spip_mots_liens AS L2
INNER JOIN spip_mots_liens AS L1 ON ( L1.id_objet = -articles.id_article- L2.id_objet ) WHERE (L1.id_mot = 3) AND L1.objet='article' AND L2.objet='article'))) AND (L2.id_mot = 261) GROUP BY articles.id_article ORDER BY articles.date DESC LIMIT 0,6
(j'enlève du cadre préformaté pour mettre en évidence la modif)
NB: avec ou sans critère doublons, c'est pareil.