Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Je suis débutant en développement avec zend mvc et je me demande si quelqu'un peut m'aider pour créer une requête de sélection de plusieurs champs sur plusieurs tables.
la structure des tables est la suivante :
table prestations :
prestations [numprestation (clé primaire), dateprestation, service, medecin, codepatient (clé étrangère) ].
table Tests :
tests [numtest (clé primaire), desiganation, idgroupetest (clé étrangère) ]
table testprestation (association porteuse entre les deux precedentes tables)
testprestation [cpt (clé primaire), numprestation (clé étrangère), numtest (clé étrangère), resultat, remarque ).
je veux faire une requête du genre :
Select p.numprestation,p.dateprestation,p.service,p.medecin,tp.resultat,t.designation
From prestations as p, tests as t, testprestation as tp
where p.numprestation=tp.numprestation
and t.numtest=tp.numtest
and p.codepatient ='X'
and t.idgroupetest =1
J'ai déjà tetster ceci, mais il parait qu'il ne fonctionne pas :
$db = Zend_Db_Table_Abstract::getDefaultAdapter();
$select = new Zend_Db_Select($db);
// Requête
$select ->from((array('p' => 'prestations','t' =>'tests','tp' => 'testprestation')),
array('p.numprestation' ,'p.datePrestation','p.service','p.medecin'));
$select->join(array('tp' => 'testprestation'),'tp.numprestation=p.numprestation',array('tp.resultat'));
$select->join(array('t'=>'tests'),'t.numtest=tp.numtest',array('t.designation'));
$select->where('p.codepatient='.$patient);
$select->where('t.idgroupetest='.$groupe);
$row = $select->query()->fetchAll();
Si quelqu'un peut m'aider ? et merci d'avance
Hors ligne
Bonjour,
Il te faut utiliser la fonction setIntegrityCheck() (cf. http://framework.zend.com/manual/en/zend.db.table.html)
Hors ligne
Bonjour,
Si quelqu'un peut m'ecrire la requête à mettre svp
Hors ligne
Bonjour, tu peux tester ça :
$db = Zend_Db_Table_Abstract::getDefaultAdapter();
$select = new Zend_Db_Select($db);
// Requête
$select ->from((array('p' => 'prestations')),array('p.numprestation' ,'p.datePrestation','p.service','p.medecin'))
->join(array('tp' => 'testprestation'),'tp.numprestation = p.numprestation',array('tp.resultat'))
->join(array('t'=>'tests'),'t.numtest = tp.numtest',array('t.designation'))
->where('p.codepatient='.$patient)
->where('t.idgroupetest='.$groupe);
$row = $select->query()->fetchAll();
s'il te renvoie un message d'erreur envoie le nous.
Bon courage.
Hors ligne
Salut,
Il te faut juste rajouter la ligne suivante lors de la préparation de ta requête :
$select->setIntegrityCheck(false);
++
Hors ligne
Merci,
J'ai ajouté la ligne et ça marche.
Je vous remercie bien
Hors ligne
Bonjour,
s'il vous plaie quelqu'un me dit comment faire le controleur et l'affichage(vue) avec cette requête à 3 tables
Hors ligne
Pages: 1