[SPIP Zone] Jointure et récupération de donnée dans la table jointe

Salut le Zone,

J'ai réussi à faire une jointure entre deux table, mais je ne sait pas
comment accédé aux donnée de la table jointe.
Par exemple j'ai un table catégorie :
id_categorie
id_parent

et une autre categorie_description :
id_categorie
lang
titre
descriptif

Et je voudrais faire :
<BOUCLE_Tadam(CATEGORIES){lang=""}>
#TITRE -> #ID_PARENT
<BOUCLE_Tadam>

ou titre viendrais de la deuxième table et id_parent de la première...

Avez vous une idée ? Perso je sèche là dessus depuis une semaine..

Seb
--
Denooz Sébastien. Crowfoot pour les intimes...
Jabber : crowfoot@jabber.fr
Web : http://www.licronux.org

Hacking For Freedom
Fellowship of F.S.F.E.
http://www.fsfe.org

Le 18/12/07, Denooz Sébastien a écrit :

Salut le Zone,

J'ai réussi à faire une jointure entre deux table, mais je ne sait pas
comment accédé aux donnée de la table jointe.
Par exemple j'ai un table catégorie :
id_categorie
id_parent

et une autre categorie_description :
id_categorie
lang
titre
descriptif

Et je voudrais faire :
<BOUCLE_Tadam(CATEGORIES){lang=""}>
#TITRE -> #ID_PARENT
<BOUCLE_Tadam>

ou titre viendrais de la deuxième table et id_parent de la première...

cf Accés SPIP aux tables non-SPIP et jointures - SPIP-Contrib

<BOUCLE_Tadam(categorie categorie_description ){id_categorie}>
#TITRE -> #ID_PARENT
<BOUCLE_Tadam>

--
@plus

Jacques

Pour les lyonnais++ spip-lyon@rezo.net http://spip-party.net/-Lyon-
S'orienter dans la galaxie : http://spip.jermer.fr/?La-boussole-Spip-en-plugin

Denooz Sébastien a écrit :

Salut le Zone,

J'ai réussi à faire une jointure entre deux table, mais je ne sait pas
comment accédé aux donnée de la table jointe.
Par exemple j'ai un table catégorie :
id_categorie
id_parent

et une autre categorie_description :
id_categorie
lang
titre
descriptif

Et je voudrais faire :
<BOUCLE_Tadam(CATEGORIES){lang=""}>
#TITRE -> #ID_PARENT
<BOUCLE_Tadam>

ou titre viendrais de la deuxième table et id_parent de la première...

Avez vous une idée ? Perso je sèche là dessus depuis une semaine..
  

je tenterai simplement (en plus de tables_principales):
$table_des_tables['categories']='categories';
$table_des_tables['categories_descriptions']='categories_descriptions';
$tables_jointures['spip_categories']= 'categories_descriptions'
$tables_jointures['spip_categories_descriptions']= 'categories';

normalement, avec ca, quand il ne trouve pas un champ, il le cherche en faisant la jointure.
mais si ca marche pas :

<BOUCLE_Tadam(CATEGORIES spip_categories_descriptions){lang=""}>
#TITRE -> #ID_PARENT
<BOUCLE_Tadam>

Je crois avoir vu passer qu'en SVN on pouvait faire :

<BOUCLE_Tadam(CATEGORIES CATEGORIES_DESCRIPTIONS){lang=""}>
#TITRE -> #ID_PARENT
<BOUCLE_Tadam>

@++

Le 18/12/07, Stephane<stephane@rezo.net> a écrit :

Denooz Sébastien a écrit :
> Salut le Zone,
>
> J'ai réussi à faire une jointure entre deux table, mais je ne sait pas
> comment accédé aux donnée de la table jointe.
> Par exemple j'ai un table catégorie :
> id_categorie
> id_parent
>
> et une autre categorie_description :
> id_categorie
> lang
> titre
> descriptif
>
> Et je voudrais faire :
> <BOUCLE_Tadam(CATEGORIES){lang=""}>
> #TITRE -> #ID_PARENT
> <BOUCLE_Tadam>
>
> ou titre viendrais de la deuxième table et id_parent de la première...
>
> Avez vous une idée ? Perso je sèche là dessus depuis une semaine..
>
je tenterai simplement (en plus de tables_principales):
$table_des_tables['categories']='categories';
$table_des_tables['categories_descriptions']='categories_descriptions';
$tables_jointures['spip_categories']= 'categories_descriptions'
$tables_jointures['spip_categories_descriptions']= 'categories';

Helas non... ca ne marche pas...
J'ai comiter mes tests.
J'ai mis ton code dans base/echoppe.php avec un
include_spip('base/echoppe'); dans mes options. Et rien.

Est-ce que le problème viendrait du fait que mes tables s'appelle
prefix_echoppe_categories
et
prefix_echoppe_categorise_descriptions
et pas
prefix_categories
et
prefix_categorise_descriptions ?

normalement, avec ca, quand il ne trouve pas un champ, il le cherche en
faisant la jointure.
mais si ca marche pas :

<BOUCLE_Tadam(CATEGORIES spip_categories_descriptions){lang=""}>
#TITRE -> #ID_PARENT
<BOUCLE_Tadam>

Ca, ca marche mais j'ai du mettre les nom complet des tables.
Autrement dis ca donne ca :
<BOUCLE_CatsALaRacine(SPIP_ECHOPPE_CATEGORIES_DESCRIPTIONS
spip_echoppe_categories){par num titre}>
    #ID_CATEGORIE - #TITRE - #ID_PARENT
</BOUCLE_CatsALaRacine>

Et c'est exactement ca que je voudrais automatiser :smiley:
donc écrire :
<...(CATEGORIES)...>
et pas
<...(SPIP_ECHOPPE_CATEGORIES_DESCRIPTIONS spip_echoppe_categories) ...>

Je crois avoir vu passer qu'en SVN on pouvait faire :

<BOUCLE_Tadam(CATEGORIES CATEGORIES_DESCRIPTIONS){lang=""}>
#TITRE -> #ID_PARENT
<BOUCLE_Tadam>

Ca j'ai pas réussit à faire marcher...

@++
_______________________________________________
spip-zone@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone

Seb

--
Denooz Sébastien. Crowfoot pour les intimes...
Jabber : crowfoot@jabber.fr
Web : http://www.licronux.org

Hacking For Freedom
Fellowship of F.S.F.E.

Denooz Sébastien a écrit :

je tenterai simplement (en plus de tables_principales):
$table_des_tables['categories']='categories';
$table_des_tables['categories_descriptions']='categories_descriptions';
$tables_jointures['spip_categories']= 'categories_descriptions'
$tables_jointures['spip_categories_descriptions']= 'categories';

Est-ce que le problème viendrait du fait que mes tables s'appelle
prefix_echoppe_categories
et
prefix_echoppe_categorise_descriptions
et pas
prefix_categories
et
prefix_categorise_descriptions ?

Clairement oui, il te faudrait définir alors plutot (à tester et corriger très certainement) :
$table_des_tables['categories']='echoppe_categories';
$table_des_tables['categories_descriptions']='echoppe_categories_descriptions';
$tables_jointures['spip_echoppe_categories']= 'categories_descriptions'; // ou echoppe_categories_description ?
$tables_jointures['spip_echoppe_categories_descriptions']= 'categories'; // ou echoppe_categories ?

Je crois avoir vu passer qu'en SVN on pouvait faire :

<BOUCLE_Tadam(CATEGORIES CATEGORIES_DESCRIPTIONS){lang=""}>
#TITRE -> #ID_PARENT
<BOUCLE_Tadam>

Ca j'ai pas réussit à faire marcher...

Non, ce n'est pas possible cela.
La deuxième table est forcément un nom réel de table et pas un alias.

MM.

Denooz Sébastien ha scritto:

Le 18/12/07, Stephane<stephane@rezo.net> a écrit :

Denooz Sébastien a écrit :

Salut le Zone,

J'ai réussi à faire une jointure entre deux table, mais je ne sait pas
comment accédé aux donnée de la table jointe.
Par exemple j'ai un table catégorie :
id_categorie
id_parent

et une autre categorie_description :
id_categorie
lang
titre
descriptif

Et je voudrais faire :
<BOUCLE_Tadam(CATEGORIES){lang=""}>
#TITRE -> #ID_PARENT
<BOUCLE_Tadam>

ou titre viendrais de la deuxième table et id_parent de la première...

Avez vous une idée ? Perso je sèche là dessus depuis une semaine..

je tenterai simplement (en plus de tables_principales):
$table_des_tables['categories']='categories';
$table_des_tables['categories_descriptions']='categories_descriptions';
$tables_jointures['spip_categories']= 'categories_descriptions'
$tables_jointures['spip_categories_descriptions']= 'categories';

J'ai découverte que les balises ne sont pas cherche dans le table jointe sans jointure exlicit.

Voir http://trac.rezo.net/trac/spip/browser/spip/ecrire/public/references.php#L85

Il ya un test
if ($boucles[$idb]->jointures_explicites) {

Donc sans jointure explicite, pas de table jointe

Peut-etre il suffit de changer ça en
if ($boucles[$idb]->jointures) {

Par contre pour les criteres simples, ça marche dejà, mais pas pour le criteres comme {par num champ_du_table_jointe}

Ciao
Renato