Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 29-09-2010 13:18:37

darmamedia
Nouveau membre
Date d'inscription: 18-08-2010
Messages: 5

[zend 1.10] GROUP_CONCAT like avec PostgreSQL

Bonjour à tous,

J'ai un gros problème qui me prend la tête depuis plusieurs jours. Alors pour faire simple j'ai une requête avec un certain nombre de jointures. Jusqu'ici tout va bien...

Voici la requête en question :

Code:

public function lister($start,$limit,$sort,$where) {
        
        
        
        $select = $this->select ();
        $select->from ( 't_client','*' )
               ->setIntegrityCheck ( false )
              // ->distinct()
               ->join ( 't_representant', 't_client.id_representant=t_representant.id_representant', 'nom_representant' )
               ->join ( 't_type_client', 't_client.id_type_client=t_type_client.id_type_client', 'type_client' )               
               ->join ( 't_delais_paiement', 't_client.id_delais_paiement=t_delais_paiement.id_delais_paiement', 'delais_paiement' )
               ->join ( 't_mode_paiement', 't_client.id_mode_paiement=t_mode_paiement.id_mode_paiement', 'mode_paiement' ) 
               
               
               ->joinleft ( 't_rib', 't_client.id_client=t_rib.id_client', array('titulaire_rib', 'code_banque_rib','code_guichet_rib','num_compte_rib','cle_rib_rib','iban_rib', 'bic_rib', 'nom_banque_rib'))
               
                   //->joinleft ( )
               ->joinleft ( 't_secteur_client', 't_secteur_client.id_client = t_client.id_client', 't_secteur_client.id_secteur')
               ->joinleft ( 't_secteur',  't_secteur.id_secteur = t_secteur_client.id_secteur', array('t_secteur.design_secteur') )
                //->group('id_client')
               
               ->order ('id_client ASC')
               ->where ($where)
               ->limit($limit, $start);

               $rows = $this->fetchAll( $select )->toArray();
               
return $rows;
    }

J'ai donc ma table t_client lié à 4 tables avec des relation 0 - N ou 1 - N, la pas de soucis avec mes jointures je récupère les champs qui m'intéresse grâce aux IDs présent dans ma table client.

Par contre la relation N - N entre ma table t_client et t_secteur (donc avec une table intermédiaire t_secteur_client) me pose problème. Lorsque je fais mes 2 "joinleft" je récupère bien ce que je veux c'est à dire : tous les champs de ma table client plus les jointures... Sauf que pour mes secteurs un client peut être associé à plusieurs secteurs, je me retrouve donc avec un résultat sur plusieurs lignes pour un même client !

http://sd-1.archive-host.com/membres/up/103230901416259131/result.jpg

Je voudrais arriver à afficher un seul client en regroupant dans un seul champs les un ou plusieurs "secteurs" de mon client.

J'ai pensé à faire un GROUP_CONCAT qui fait exactement ce que j'ai besoin, mais j'utilise postgreSQL... J'ai essayé différentes sortes de SELECT avec des GROUP BY ou des DISTINCT mais je n'arrive pas à obtenir ce que je veux. J'ai également pensé à des requêtes imbriquées mais je ne sais pas trop comment m'y prendre avec le composant Db de Zend. J'ai même pensé à traiter tout ça en PHP... Bref je ne sais plus quoi faire. sad

Merci d'avance...

Hors ligne

 

#2 29-09-2010 17:49:52

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: [zend 1.10] GROUP_CONCAT like avec PostgreSQL

GROUP_CONCAT est une fonction propre à MySQL qui n'existe pas dans les autres moteurs ce n'est pas dans la norme à ma connaissance

A+JYT

Hors ligne

 

#3 30-09-2010 10:49:54

darmamedia
Nouveau membre
Date d'inscription: 18-08-2010
Messages: 5

Re: [zend 1.10] GROUP_CONCAT like avec PostgreSQL

Oui, je sais mais je cherchais un moyen de faire la même chose avec mon postgrSQL... Bon du coup j'ai un traitement avec des tableaux en PHP...

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages