Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] jDao : prob tables liées

Posted by Jihel on 08/22/2008 12:34

Bjr à tous

Encore merci pour votre aide sympathique sans laquelle je me 'noierais' facilement dans les méandres de cette géniale mécanique qu'est Jelix ! J'aborde un autre aspect, celui des tables liées. J'utilise un dao 'titre' qui fonctionnait très bien tant que je ne tentais pas de le lier à une autre table par l'intermédiaire d'une table d'association. Je m'explique :

titre.dao.xml :

 <dao xmlns="http://jelix.org/ns/dao/1.0">
     <datasources>
         <primarytable name="titre" realname="titre" primarykey="id_titre" />
         <foreigntable name="lang" realname="lang" primarykey="id_lang" onforeignkey="lang_id" />
         <optionalforeigntable name="interp_titre" realname="interp_titre" primarykey="titre_id_it" onforeignkey="id_titre" />
         <optionalforeigntable name="interp" realname="interp" primarykey="id_interp" onforeignkey="interp_id_it" />
     </datasources>
     <record>       
     <property name="id_titre" fieldname="id_titre" datatype="autoincrement"/>
     <property name="nom_titre" fieldname="nom_titre" datatype="string" required="true" maxlength="255"/>
     <property name="version_titre" fieldname="version_titre" datatype="int" required="true" default="1"/>
     <property name="type_titre" fieldname="type_titre" datatype="string" required="true" default="1"/>
     <property name="path_titre" fieldname="path_titre" datatype="string" required="true" maxlength="255"/>
     <property name="file_titre" fieldname="file_titre" datatype="string" required="true" maxlength="255"/>
     <property name="annee_titre" fieldname="annee_titre" datatype="int" default=""/>
     <property name="lang_id" fieldname="lang_id" datatype="int" required="true" default="1"/>
     <property name="texte_id" fieldname="texte_id" datatype="int" default=""/>
     <property name="poids_titre" fieldname="poids_titre" datatype="int" required="true"/>
 
     <property name="code_lang" fieldname="code_lang" datatype="string" table="lang" />
  
     <property name="titre_id_it" fieldname="titre_id_it" datatype="int" table="interp_titre" />
     <property name="interp_id_it" fieldname="interp_id_it" datatype="int" table="interp_titre" /> 
 
     <property name="nom_interp" fieldname="nom_interp" datatype="string" table="interp" />
     <property name="prenom_interp" fieldname="prenom_interp" datatype="string" table="interp" />
 
     </record>

La table 'titre' contient le nom de la musique, la table 'interp_titre' contient les id du titre et des différents interprètes du titre, et la table 'interp' contient les noms des interprètes concernés.

Suivant ce que j'ai écris, j'obtiens un message d'erreur car la requête ne peut être exécutée en raison de la colonne 'interp_id_it' qui n'existe pas dans la table 'titre' mais vient de 'interp_titre' :

 [error 403] Erreur dans la requête (Unknown column 'titre.interp_id_it' in 'on clause'(SELECT `titre`.`id_titre`, `titre`.`nom_titre`, `titre`.`version_titre`,
  `titre`.`type_titre`, `titre`.`path_titre`, `titre`.`file_titre`, `titre`.`annee_titre`, `titre`.`lang_id`, `titre`.`texte_id`, `titre`.`poids_titre`,
  `lang`.`code_lang`, `interp_titre`.`titre_id_it`, `interp_titre`.`interp_id_it`, `interp`.`nom_interp`, `interp`.`prenom_interp` FROM `titre` AS `titre`
  LEFT JOIN `interp_titre` AS `interp_titre` ON ( `titre`.`id_titre`=`interp_titre`.`titre_id_it`) 
 LEFT JOIN `interp` AS `interp` ON ( `titre`.`interp_id_it`=`interp`.`id_interp`), `lang` AS `lang`
  WHERE `titre`.`lang_id`=`lang`.`id_lang` ORDER BY nom_titre asc)) D:\wamp\www\jelix\lib\jelix\plugins\db\mysql\mysql.dbconnection.php 105

Je suppose que ce genre de requête ne peut se faire simplement avec un dao et que je devrais utiliser jDb (ouille, ouille, ouille !) Merci d'avance de bien vouloir m'éclairer sur ce sujet, je vous en serai reconnaissant Très cordialement JiheL

  [Opened] Re: jDao : prob tables liées

Reply #1 Posted by laurentj on 08/22/2008 14:40

Salut,

non, tu ne peux pas utiliser dans jDao deux tables qui sont liées par une table de jointure.

  [Opened] Re: jDao : prob tables liées

Reply #2 Posted by Jihel on 08/22/2008 15:00

Un très grand merci Laurent pour ta réponse rapide qui confirme ce que je craignais, il me reste donc à me pencher sur jDb pour parvenir au résultat escompté. Je te souhaite un très bon week-end Cordialement Jihel

 
Page
  1. jDao : prob tables liées