Ajouter des docs à la table spip_documents_articles en MySql

En utilisant MySql, il est possible d’ajouter ces documents dans la table spip_documents_articles.

Dans quel cas se sert-on de cette requête ? On s’en sert pour éviter de doublonner les documents joints aux articles.

On doit sélectionner une liste à 2 colonnes, les articles qui sont des traductions d’articles, et les documents joints à l’article original. On utilise ignore pour que le process ne s’arrête pas si le couple id_document/id_article existe déja dans la table.

Nota : avant de lancer l’opération et afin d’éviter les doublons, nous avons pris la précaution de remplacer les index de la table spip_documents_articles par une clé primaire sur les 2 champs. Voici la commande à lancer pour effectuer cette manip :

ALTER TABLE `spip_documents_articles` ADD PRIMARY KEY ( `id_document` , `id_article` )

Ce qui donnera par exemple pour tous les articles de toutes les sous rubriques de la rubrique 23 :

INSERT IGNORE INTO spip_documents_articles (id_article, id_document)
SELECT a.id_article, d.id_document
FROM spip_articles AS a
JOIN spip_documents_articles AS b
        ON a.id_trad = b.id_article
JOIN spip_documents AS d
        ON b.id_document = d.id_document
JOIN spip_rubriques AS r
        ON r.id_rubrique = a.id_rubrique
WHERE r.id_parent = 23
        AND a.id_article != a.id_trad
        AND a.id_trad != 0
ORDER BY r.id_parent ASC