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

  [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

Reply #1 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.

 
Page
  1. [Fermer] jResponse -> redirection >
  2. Ajouter dynamiquement des jointures à une requête sql