Bonjour,
je reviens sur ce probleme que j’avais laisse de cote.
j’ai plusieurs boucles qui utilisent des jointures sur 3 tables, dont la table documents.
ces boucles fonctionnent sur une version spip 1.9.2c mais ne fonctionnent plus en spip 2.1.10.
un cas est le suivant : afficher l’ensemble des images des articles publies par un auteur.
sur spip 1.9.2c ma boucle etait la suivante :
quand je regarde la requete sql generee sur spip 2.1.10, ca donne :
SELECT L3.id_document, articles.lang
FROM <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+c3BpcF90ZXN0XzIxMTA8L2NvZGU+"></span>.spip_articles
AS <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+YXJ0aWNsZXM8L2NvZGU+"></span>
INNER JOIN <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+c3BpcF90ZXN0XzIxMTA8L2NvZGU+"></span>.spip_auteurs_articles
AS L2 ON ( L2.id_article = articles.id_article )
INNER JOIN <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+c3BpcF90ZXN0XzIxMTA8L2NvZGU+"></span>.spip_documents_liens
AS L3 ON ( L3.id_objet = L2.id_auteur
AND L3.objet='auteur')
INNER JOIN <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+c3BpcF90ZXN0XzIxMTA8L2NvZGU+"></span>.spip_documents
AS L4 ON ( L4.id_document = L3.id_document )
INNER JOIN <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+c3BpcF90ZXN0XzIxMTA8L2NvZGU+"></span>.spip_auteurs_articles
AS L1 ON ( L1.id_article = articles.id_article )
WHERE (articles.statut = 'publie')
AND (articles.id_secteur = 8)
AND (L1.id_auteur = 284)
AND ((L4.extension
IN ('png','jpg','gif')))
GROUP BY articles.id_article
ORDER BY FIELD(L4.extension,'png','jpg','gif')
le probleme vient visiblement du fait qu’on tente de faire une jointure entre documents et auteurs_articles via documents_liens
INNER JOIN spip_test_2110
.spip_documents_liens
AS L3 ON ( L3.id_objet = L2.id_auteur
AND L3.objet=’auteur’)
alors que la jointure devrait se faire entre articles et auteur via auteurs_articles
je ne vois pas comment forcer cette jointure.
en attendant pour m’en sortir j’ai decoupe mes boucles en 2.
(j’utilise au besoin #COMPTEUR_BOUCLE pour limiter les resultats)