Je viens de tester cette boucle :
<BOUCLE_cmi_art(SYNDIC_ARTICLES) {tout} {titre_mot=CMI} {par date}
{inverse}{pagination 6}>
La requete sql resultante est :
SELECT syndic_articles.id_syndic_article, syndic_articles.date,
syndic_articles.url, syndic_articles.titre, L1.url_site, L1.nom_site
FROM spip_syndic_articles AS `syndic_articles` INNER JOIN
spip_syndic AS L1 ON ( L1.id_syndic = syndic_articles.id_syndic )
INNER JOIN spip_mots AS L2 ON ( L2.url_propre = L1.url_propre ) INNER
JOIN spip_mots AS L3 ON ( L3.id_mot = L2.id_mot )
WHERE (syndic_articles.statut = 'publie')
AND (L3.titre = 'CMI')
AND (L1.statut = 'publie')
GROUP BY syndic_articles.id_syndic_article
ORDER BY syndic_articles.date DESC
Le resultat n'est pas bon. J'obtiens des articles syndiqués de site
n'ayant pas le mot clef 'CMI'.
Je pense que c'est du à la jointure L2.url_propre = L1.url_propre
Bien que j'ai activé les url_propre sur le site, spip_mots.url_propre est vide.
De plus je trouve bizarre qu'on jointure sur ce champ.
Un bug référencé et corrigé affectait les mises a jour : une partie des mises a jour était sautée après reprise sur timeout (ie toute la série des 1.9xx était interrompue pour continuer directement sur la série des 10000)
Le mieux est de remettre 1.931 dans la meta version_base, de supprimer tmp/meta_cache.txt et relancer la maj
Cédric
Avec la solution de Cedric cela remis d'aplomb la base.
Toutefois si je fais la boucle indiquée, je n'obtiens plus de
résultat. La requete est :
SELECT syndic_articles.date, syndic_articles.id_syndic_article,
syndic_articles.url, syndic_articles.titre, L1.url_site, L1.nom_site
FROM spip_syndic_articles AS `syndic_articles` INNER JOIN
spip_syndic AS L1 ON ( L1.id_syndic = syndic_articles.id_syndic )
INNER JOIN spip_mots AS L2 ON ( L2.maj = L1.maj ) INNER JOIN spip_mots
AS L3 ON ( L3.id_mot = L2.id_mot )
WHERE (syndic_articles.statut = 'publie')
AND (L3.titre = '')
AND (L1.statut = 'publie')
GROUP BY syndic_articles.id_syndic_article
ORDER BY syndic_articles.date DESC
Tandis que si je met id_mot comme critere, j'ai bien les resultat voulu.
La boucle :
<BOUCLE_cmi_art(SYNDIC_ARTICLES) {tout} {id_mot=354} {par date}
{inverse}{pagination 6}>
La requete générée :
SELECT syndic_articles.date, syndic_articles.id_syndic_article,
syndic_articles.url, syndic_articles.titre, L2.url_site, L2.nom_site
FROM spip_syndic_articles AS `syndic_articles` INNER JOIN
spip_syndic AS L2 ON ( L2.id_syndic = syndic_articles.id_syndic )
INNER JOIN spip_mots_syndic AS L1 ON ( L1.id_syndic =
syndic_articles.id_syndic )
WHERE (syndic_articles.statut = 'publie')
AND (L1.id_mot = 354)
AND (L2.statut = 'publie')
GROUP BY syndic_articles.id_syndic_article
ORDER BY syndic_articles.date DESC
Le probléme de jointure doit etre lié à ( L2.maj = L1.maj )