Bonjour,
Si je fais une boucle :
<BOUCLE_principale(ARTICLES){id_article}>
<BOUCLE_x(RUBRIQUES){parents}{id_secteur = 42}>
etc.
La requête SQL générée est :
SELECT rubriques.id_rubrique, rubriques.id_rubrique, rubriques.lang, rubriques.titre
FROM spip_rubriques AS `rubriques`
WHERE (rubriques.statut = 'publie')
AND ((rubriques.id_rubrique = 521) OR (rubriques.id_rubrique IN (
SELECT rl.id_parent
FROM spip_rubriques_liens as rl
WHERE rl.id_objet=11301 AND objet='article')))
AND (rubriques.id_secteur = 42)
LIMIT 0,1
alors qu’elle devrait être :
SELECT rubriques.id_rubrique, rubriques.id_rubrique, rubriques.lang, rubriques.titre
FROM spip_rubriques AS `rubriques`
WHERE (rubriques.statut = 'publie')
**AND (rubriques.id_secteur = 42)**
AND ((rubriques.id_rubrique = 521) OR (rubriques.id_rubrique IN (
SELECT rl.id_parent
FROM spip_rubriques_liens as rl
WHERE rl.id_objet=11301 AND objet='article')))
AND (rubriques.id_secteur = 42)
LIMIT 0,1
On peut obtenir le comportement voulu en faisant ça, c’est pas très élégant mais ça marche :
<BOUCLE_principale(ARTICLES){id_article}>
<BOUCLE_x(RUBRIQUES){id_secteur = 42}{parents}{id_secteur = 42}>
etc.
Ce bug est peut-être aussi présent dans d’autres critères de polyhierarchie.
A bientôt
Simon
Hello,
excuse moi, je ne comprends pas où est le bug. Tu ajoutes une deuxième
fois la condition sur le secteur, mais celle-ci est au meme niveau.
Cédric
Le 17 mai 2010 11:54, Simon Camerlo <scamerlo.work@gmail.com> a écrit :
Bonjour,
Si je fais une boucle :
<BOUCLE_principale(ARTICLES){id_article}>
<BOUCLE_x(RUBRIQUES){parents}{id_secteur = 42}>
etc.
La requête SQL générée est :
SELECT rubriques.id_rubrique, rubriques.id_rubrique, rubriques.lang,
rubriques.titre
FROM spip_rubriques AS `rubriques`
WHERE (rubriques.statut = 'publie')
AND ((rubriques.id_rubrique = 521) OR (rubriques.id_rubrique IN (
SELECT rl.id_parent
FROM spip_rubriques_liens as rl
WHERE rl.id_objet=11301 AND objet='article')))
AND (rubriques.id_secteur = 42)
LIMIT 0,1
alors qu'elle devrait être :
SELECT rubriques.id_rubrique, rubriques.id_rubrique, rubriques.lang,
rubriques.titre
FROM spip_rubriques AS `rubriques`
WHERE (rubriques.statut = 'publie')
AND (rubriques.id_secteur = 42)
AND ((rubriques.id_rubrique = 521) OR (rubriques.id_rubrique IN (
SELECT rl.id_parent
FROM spip_rubriques_liens as rl
WHERE rl.id_objet=11301 AND objet='article')))
AND (rubriques.id_secteur = 42)
LIMIT 0,1
On peut obtenir le comportement voulu en faisant ça, c'est pas très élégant
mais ça marche :
<BOUCLE_principale(ARTICLES){id_article}>
<BOUCLE_x(RUBRIQUES){id_secteur = 42}{parents}{id_secteur = 42}>
etc.
Ce bug est peut-être aussi présent dans d'autres critères de polyhierarchie.
A bientôt
Simon
_______________________________________________
spip-zone@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone
Si j’ajoute la condition avant le critère {parents}, id_secteur est testé dans la requête sql principale seule.
Si je l’ajoute après, il est testé dans la sous-requête seule.
Si je l’ajoute avant et après, il est testé dans les deux (ce qui devrait être le cas dans toutes les configurations précédentes aussi).
A bientôt
Simon
Le 17 mai 2010 18:38, Cédric Morin <cedric.morin@yterium.com> a écrit :
Hello,
excuse moi, je ne comprends pas où est le bug. Tu ajoutes une deuxième
fois la condition sur le secteur, mais celle-ci est au meme niveau.
Cédric
Le 17 mai 2010 11:54, Simon Camerlo <scamerlo.work@gmail.com> a écrit :
Bonjour,
Si je fais une boucle :
<BOUCLE_principale(ARTICLES){id_article}>
<BOUCLE_x(RUBRIQUES){parents}{id_secteur = 42}>
etc.
La requête SQL générée est :
SELECT rubriques.id_rubrique, rubriques.id_rubrique, rubriques.lang,
rubriques.titre
FROM spip_rubriques AS rubriques
WHERE (rubriques.statut = ‹ publie ›)
AND ((rubriques.id_rubrique = 521) OR (rubriques.id_rubrique IN (
SELECT rl.id_parent
FROM spip_rubriques_liens as rl
WHERE rl.id_objet=11301 AND objet=‹ article ›)))
AND (rubriques.id_secteur = 42)
LIMIT 0,1
alors qu’elle devrait être :
SELECT rubriques.id_rubrique, rubriques.id_rubrique, rubriques.lang,
rubriques.titre
FROM spip_rubriques AS rubriques
WHERE (rubriques.statut = ‹ publie ›)
AND (rubriques.id_secteur = 42)
AND ((rubriques.id_rubrique = 521) OR (rubriques.id_rubrique IN (
SELECT rl.id_parent
FROM spip_rubriques_liens as rl
WHERE rl.id_objet=11301 AND objet=‹ article ›)))
AND (rubriques.id_secteur = 42)
LIMIT 0,1
On peut obtenir le comportement voulu en faisant ça, c’est pas très élégant
mais ça marche :
<BOUCLE_principale(ARTICLES){id_article}>
<BOUCLE_x(RUBRIQUES){id_secteur = 42}{parents}{id_secteur = 42}>
etc.
Ce bug est peut-être aussi présent dans d’autres critères de polyhierarchie.
A bientôt
Simon
spip-zone@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone
Le 17 mai 2010 15:25, simon camerlo <scamerlo.work@gmail.com> a écrit :
Si j'ajoute la condition avant le critère {parents}, id_secteur est testé
dans la requête sql principale seule.
Si je l'ajoute après, il est testé dans la sous-requête seule.
Je ne vois pas de différence entre les deux positions, compte tenu du
parenthesage.
Il n'est jamais dans la sous requête, ou alors c'est un bug de mySQL
sur la lecture des parenthèses ...
Si je l'ajoute avant et après, il est testé dans les deux (ce qui devrait
être le cas dans toutes les configurations précédentes aussi).
A bientôt
Simon
Le 17 mai 2010 18:38, Cédric Morin <cedric.morin@yterium.com> a écrit :
Hello,
excuse moi, je ne comprends pas où est le bug. Tu ajoutes une deuxième
fois la condition sur le secteur, mais celle-ci est au meme niveau.
Cédric
Le 17 mai 2010 11:54, Simon Camerlo <scamerlo.work@gmail.com> a écrit :
> Bonjour,
>
> Si je fais une boucle :
>
> <BOUCLE_principale(ARTICLES){id_article}>
> <BOUCLE_x(RUBRIQUES){parents}{id_secteur = 42}>
> etc.
>
> La requête SQL générée est :
>
> SELECT rubriques.id_rubrique, rubriques.id_rubrique,
> rubriques.lang,
> rubriques.titre
> FROM spip_rubriques AS `rubriques`
> WHERE (rubriques.statut = 'publie')
> AND ((rubriques.id_rubrique = 521) OR
> (rubriques.id_rubrique IN (
> SELECT rl.id_parent
> FROM spip_rubriques_liens as rl
> WHERE rl.id_objet=11301 AND objet='article')))
> AND (rubriques.id_secteur = 42)
> LIMIT 0,1
>
> alors qu'elle devrait être :
>
> SELECT rubriques.id_rubrique, rubriques.id_rubrique,
> rubriques.lang,
> rubriques.titre
> FROM spip_rubriques AS `rubriques`
> WHERE (rubriques.statut = 'publie')
> AND (rubriques.id_secteur = 42)
> AND ((rubriques.id_rubrique = 521) OR
> (rubriques.id_rubrique IN (
> SELECT rl.id_parent
> FROM spip_rubriques_liens as rl
> WHERE rl.id_objet=11301 AND objet='article')))
> AND (rubriques.id_secteur = 42)
> LIMIT 0,1
>
> On peut obtenir le comportement voulu en faisant ça, c'est pas très
> élégant
> mais ça marche :
>
> <BOUCLE_principale(ARTICLES){id_article}>
> <BOUCLE_x(RUBRIQUES){id_secteur = 42}{parents}{id_secteur = 42}>
> etc.
>
> Ce bug est peut-être aussi présent dans d'autres critères de
> polyhierarchie.
>
> A bientôt
> Simon
>
>
> _______________________________________________
> spip-zone@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone
>
>
Le 17 mai 2010 21:28, Cédric Morin <cedric.morin@yterium.com> a écrit :
Le 17 mai 2010 15:25, simon camerlo <scamerlo.work@gmail.com> a écrit :
Si j’ajoute la condition avant le critère {parents}, id_secteur est testé
dans la requête sql principale seule.
Si je l’ajoute après, il est testé dans la sous-requête seule.
Je ne vois pas de différence entre les deux positions, compte tenu du
parenthesage.
Il n’est jamais dans la sous requête, ou alors c’est un bug de mySQL
sur la lecture des parenthèses …
Bon, soit mon serveur s’est pris les pieds dans le tapis pendant mes tests, soit c’est moi à force de faire trop de trucs à la fois.
Je n’arrive plus à reproduire le comportement que j’avais tout-à-l’heure.
Je vais continuer à creuser. Si je reproduis, je posterai un message avec des détails.
Sinon, désolé pour le bruit, c’est moi qui ai buggé.
A bientôt
Simon