r11205 - spip/ecrire/public

Author: esj@rezo.net
Date: 2008-02-09 20:55:20 +0100 (sam, 09 fév 2008)
New Revision: 11205

Log:
Complément à [11901]: la suppression de la table principale dans la requête lorsque celle-ci ne concerne en fait que la jointutre s'étend au cas de plusieurs jointures et non plus une seule.

Application: trouver dans une hiérarchie la rubrique ayant un mot clé d'un certain groupe:

{{{
<BOUCLE2(HIERARCHIE)
    {id_rubrique}
    {tout}
    {type='Squelette'}
    {inverse}
    {0,1}
    {lang_select=non}
}}}
se compile en
{{{
SELECT L1.id_rubrique
FROM spip_mots_rubriques AS L1
    INNER JOIN spip_mots AS L2 ON (L2.id_mot = L1.id_mot)
WHERE (L2.type = 'Squelette')
    AND (L1.id_rubrique IN (329,589,645))
GROUP BY L1.id_rubrique
ORDER BY FIELD(L1.id_rubrique, 329,589,645) DESC
LIMIT 0,1
}}}
et non plus en
{{{
SELECT rubriques.id_rubrique
FROM spip_rubriques AS `rubriques`
    INNER JOIN spip_mots_rubriques AS L1 ON (L1.id_rubrique = rubriques.id_rubrique)
    INNER JOIN spip_mots AS L2 ON (L2.id_mot = L1.id_mot)
WHERE (L2.type = 'Squelette')
    AND (rubriques.id_rubrique IN (329,589,645))
GROUP BY rubriques.id_rubrique
ORDER BY FIELD(rubriques.id_rubrique, 329,589,645) DESC
LIMIT 0,1
}}}
Il faut le critère {{{ {lang_select=non} }}} autrement le champ lang est mis d'office et empêche la disparition. Il faudrait voir si cette mise d'office e pourrait pas être évitée.

Modified:
   spip/ecrire/public/composer.php

Details: http://trac.rezo.net/trac/spip/changeset/11205