Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework > Zend_Db
Zend_Db Forum d'entraide pour le composant Zend_Db du Zend Framework (création de requêtes, abstraction, ORM etc.). Avant de poster -> FAQ Zend_Db.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/05/2011, 11h32   #1
Membre du Club
 
Inscription : août 2008
Messages : 165
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 165
Points : 50
Points : 50
Par défaut relation N-N zend_db

bonjour à toutes et à tous,

comme j'ai écrit dans l'intitulé j'ai une relation N-N entre 2 tables et j'ai crée une 3eme table intérimaire, mon problème c'est au niveau de la récupération des données: les données sont dupliqués au nombres des tuples dans la table intermédiaire, voila le code:

Code :
1
2
3
4
5
6
7
8
9
10
11
 
$select = $db->select()
 
	->from(array('c' => 'constat'),array('lc.Intitule',"c.Idconstat", "c.IntituleCst", "c.DateDebut", "c.Idrespqse",	"c.Description"))
 
	->join(array('l' => 'concerne_cons_proc'),'c.Idconstat = l.Idconstat',array())
 
	->join(array('lc' => 'type_constat'),'c.Idtypconstat = lc.Idtypconstat',array())
	->where('l.IdProc = ?',$Odoc);
 
	$resStati = $db->fetchAll($select,null,Zend_Db::FETCH_GROUP);
le résultat de la requête est le suivant:

Code :
1
2
3
4
5
6
 
array(1) { ["dysfonctionnement"]=> array(3) { 
[0]=> array(5) { ["Idconstat"]=> string(1) "2" ["IntituleCst"]=> string(1) "3" } 
[1]=> array(5) { ["Idconstat"]=> string(1) "1" ["IntituleCst"]=> string(1) "1" } 
[2]=> array(5) { ["Idconstat"]=> string(1) "1" ["IntituleCst"]=> string(1) "1"  } 
} }
les données dupliqués sont [1] et [2]
je me suis bloqué à ce niveau
merciiiiiiii d'avance.
kamclasse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2011, 10h43   #2
Membre du Club
 
Inscription : août 2008
Messages : 165
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 165
Points : 50
Points : 50
bonjour Tout le monde,

j'ai essayé d'utiliser la fonction distinct() mais ça marche pas le code devenu comme ceci :

Code :
1
2
3
4
5
6
7
8
9
10
11
 
$select = $db->select()
	->distinct()						
	->from(array('c' => 'constat'),array('lc.Intitule',"c.Idconstat", "c.IntituleCst", "c.DateDebut", "c.Idrespqse",	"c.Description"))
 
	->join(array('l' => 'concerne_cons_proc'),'c.Idconstat = l.Idconstat',array())
 
	->join(array('lc' => 'type_constat'),'c.Idtypconstat = lc.Idtypconstat',array())
	->where('l.IdProc = ?',$Odoc);
 
	$resStati = $db->fetchAll($select,null,Zend_Db::FETCH_GROUP);
est ce qu'il y a une moyenne d'indiquer le champ ou je veux mettre le distinct() par exemple:

Code :
1
2
 
->distinct("l.IdProc ")
j'ai beaucoup besoin d'une solution j'ai beaucoup cherché dans google mais aucun résultat .
un grand merciiiii à tout le monde
kamclasse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2011, 11h06   #3
Membre régulier
 
Inscription : février 2011
Messages : 114
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 114
Points : 77
Points : 77
Bonjour,

je suis confronté au même problème, as-tu trouvé une solution?

Merci d'avance pour votre aide!!!!
flilou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 11h31   #4
Membre régulier
 
Inscription : février 2011
Messages : 114
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 114
Points : 77
Points : 77
Bonjour,

j'ai trouvé solution à mon problème et je le poste pour qui ça peut aider.

Il m'a suffit de préciser lorsque je fais ma jointure le champs sur lequel mon distinct va porter dans ma table liée par cette jointure.

Plus clairement, avec la requête ci-dessus, j'ai fait:
Code :
1
2
3
4
5
6
7
8
9
$select = $db->select()
							
	->from(array('c' => 'constat'),array('lc.Intitule',"c.Idconstat", "c.IntituleCst", "c.DateDebut", "c.Idrespqse",	"c.Description"))
							
	->join(array('l' => 'concerne_cons_proc'),'c.Idconstat = l.Idconstat',array( 'l.Idconstat' ))
							
	->join(array('lc' => 'type_constat'),'c.Idtypconstat = lc.Idtypconstat',array( 'lc.Idtypeconstat' ))
	->where('l.IdProc = ?',$Odoc);
voilà pour moi,
en espérant aider certains d'entre vous.....
flilou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2011, 17h24   #5
Membre du Club
 
Inscription : août 2008
Messages : 165
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 165
Points : 50
Points : 50
merci flilou,

malheureusement pour moi c'est toujours le même problème.

merci encore
kamclasse est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h38.


 
 
 
 
Partenaires

Hébergement Web