Automatisme des jointures

Lorsqu’elles ne sont pas explicitement déclarées à SPIP, les jointures sont calculées. Pour cela, SPIP compare entre eux les noms des champs des différentes tables.

Lorsqu’une boucle, par exemple AUTEURS cherche un critère absent de sa table, par exemple {prenom=Daniel}, SPIP va regarder dans les autres tables qu’il connaît et qui ont des champs homonymes à la table auteur (par exemple la clé id_auteur) si elles possèdent le champ « prenom » demandé. Si l’une d’elles le possède, une jointure sera réalisée entre ces deux tables.

Par exemple, si une table AUTEURS_ELARGIS existe (plugin « Inscription 2 ») avec les champs « id_auteur » et « prenom », une jointure serait réalisée.

objet, id_objet

SPIP 2.0 introduit une nouvelle recherche de jointure. Les clés primaires d’une table, dans ce cas « id_auteur » de la table spip_auteurs, en plus d’être cherchées dans des champs homonymes sur d’autres tables, sont aussi cherchées dans les tables possédant le couple de champ « objet » et « id_objet », tel que, ici, « objet=auteur ». C’est par exemple le cas de la table spip_documents_liens.

Jointures selon clés primaires

Dans une BOUCLE_maboucle(TABLE_UN table_deux){criteres...}, le compilateur SPIP cherche à établir la jointure selon la règle de priorité suivante :
– Il établit une jointure en partant de la clé primaire de la 2eme table, lorsque celle ci est également champ de la 1ère table.
– Si il ne trouve pas, il regarde si il y a des déclarations de clés dans l’entrée join de la déclaration de la table.

Auteur Matthieu Marcillaud Publié le : Mis à jour : 02/10/22

Traductions : English, français, Nederlands