- 1
[Opened] Ajouter dynamiquement des jointures à une requête sql
Posted by mlmic on 05/23/2012 11:46
Bonjour! Je travaille avec Jelix 1.3
J'ai créé un dao, j'ai ajouté des jointures à la table principale en utilisant la balise <foreigntable>. j'ai créé une classe avec une méthode qui me retourne les données extraites de la base de données.
Dans cette méthode j'appelle $conditions = jDao::createConditions();
pour ajouter les conditions. tout fonctionne bien.
Le souci que j'ai c'est de pourvoir ajouté dynamiquement une jointure avec une autre table qui n'est pas défini dans mon dao. Je m'explique : J'ai une fiche de saisie des critères de recherche et si un critère saisi n'est vide alors j'ajoute une condition à la requête. Je voudrais pourvoir ajouté une jointure avec une table qui n'est défini dans mon dao suivant la valeur d'un champ saisi ci-dessous le bout de code php que je voudrais reproduire dans le jdao de jelix :
if ( $this->numart_comp != "") { $FieldSupp = ", d_composant.qte_art"; $TableSupp = ", d_composant"; } $sql = "SELECT d_article.numart,d_article.ident,d_article.typobj,d_article.depta,d_article.ctra,d_article.secta,d_article.dv,d_article.sv,d_article.natprod, d_article.refcom,d_article.remqte,d_article.spec,d_article.comp_spec,d_article.eplargeur,d_article.ephauteur,d_article.cod_unite_st, d_article.stkmini_abs,d_article.cond_vente,d_article.cond_stk,d_article.supprim , natprod.libelle as natlib, typobj.libelle as typlib, ctra.libelle as ctralib, depta.libelle as deptalib, secta.libelle as sectalib, dv.libelle as dvlib, sv.libelle as svlib, secta.cout_hor $FieldSupp,d_article.create_date,d_article.create_author,d_article.update_author,d_article.update_date,d_article.ssv,ssv.libelle as ssvlib FROM d_article JOIN natprod ON d_article.natprod = natprod.natprod JOIN typobj ON d_article.typobj = typobj.typobj JOIN ctra ON d_article.ctra = ctra.ctra JOIN depta ON d_article.depta = depta.depta JOIN secta ON d_article.secta = secta.secta AND d_article.ctra = secta.ctra and d_article.depta = secta.depta LEFT JOIN dv ON d_article.dv = dv.dv LEFT JOIN sv ON d_article.sv = sv.sv AND d_article.dv = sv.dv LEFT JOIN ssv ON d_article.ssv = ssv.ssv and d_article.sv = ssv.sv and d_article.dv = ssv.dv "; if($TableSupp != "") { $sql .= " JOIN " . $TableSupp . " ON d_article.numart = " . $TableSupp . ".numart "; }
La variable $TableSupp contient la table que je dois ajouter dynamiquement à ma requête
Toutes vos suggestions seront les bienvenues
bonne journée
[Opened] Ajouter dynamiquement des jointures à une requête sql
Posted by laurentj on 05/23/2012 16:29
Bonjour,
ce n'est pas possible avec jDao. Il faut passer par du SQL classique + jDb.
- 1