SPIP

[ar] [ast] [bg] [br] [ca] [co] [cpf] [cs] [da] [de] [en] [eo] [es] [eu] [fa] [fon] [fr] [gl] [id] [it] [ja] [lb] [nl] [oc] [pl] [pt] [ro] [ru] [sk] [sv] [tr] [vi] [zh] Espace de traduction

Télécharger

{fusion champ_sql}

Août 2010 — mis à jour le : Octobre 2013

Toutes les versions de cet article :


Le critère fusion permet de regrouper les résultats d’une boucle SPIP selon les valeurs distinctes d’un champ.

Si la boucle sans le critère {fusion champ_sql} ramène plusieurs enregistrements ayant la même valeur de champ_sql, alors, la boucle avec le critère {fusion champ_sql} ne présentera qu’un seul de ceux ci.

Pour cela, la requête SQL générée intègre une instruction GROUP BY.

Exemple ’pédagogique’

La boucle suivante affichera les titres de tous les articles du site :

  1. <BOUCLE_tous(ARTICLES)>
  2. #TITRE
  3. </BOUCLE_tous>

La boucle suivante, avec un critère fusion portant sur la rubrique, partira également de tous les articles, mais les regroupera par id_rubrique identique, et ne présentera au final qu’un seul article par rubrique.

  1. <BOUCLE_extrait(ARTICLES){fusion id_rubrique}>
  2. #TITRE
  3. </BOUCLE_extrait>

Exemples ’appliqués’

La boucle suivante affiche les 10 messages de forum les plus récents, triés par date, et émanant d’une IP distincte :

  1. <BOUCLE_comment(FORUMS){plat}{par date}{inverse}{0,10}{fusion ip}>
  2.        <INCLURE{fond=inc/intro_commentaire}{id_forum}>
  3. </BOUCLE_comment>

Il est également possible d’utiliser des expressions SQL en paramètre du critère. La boucle suivante affichera la liste des années pour lesquelles il y a au moins un article :

  1. <BOUCLE_annees_avec_articles(ARTICLES){par date}{inverse}{fusion YEAR(date)}>
  2.         [(#DATE|annee)]
  3. </BOUCLE_annees_avec_articles>

Une contribution présente comment utiliser ce critère pour lister les articles par année, puis par mois. Voir

Attention

Un critère de tri {par xxx} combiné au critère {fusion champ_sql} ne retournera pas forcément les résultats attendus.

-  <BOUCLE_a1(ARTICLES){tout}{par id_article}>
ramène les articles triés par id_article (du 1 au 10000 par exemple).

-  <BOUCLE_a2(ARTICLES){par id_article}{fusion id_rubrique}>
ramène les articles, triés par id_article après regroupement par id_rubrique, mais ces regroupements sont faits en vrac et, a priori, sans tris particuliers !

Voir également

-  le critère {doublons}
-  le filtre |unique


Voir le squelette de cette page Site réalisé avec SPIP | Espace de traduction | Espace privé