Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 20-08-2008 10:48:20

bucheron
Membre
Date d'inscription: 30-05-2008
Messages: 138

Comment faire un union avec Zend_db_select ?

Hello tout le monde,

quelqu'un sait il comment faire pour réaliser un union de 2 requête crée avec Zend_DB_Select ?

J'ai chercher dans la doc mais j'ai rien trouvé.

merci

Hors ligne

 

#2 21-08-2008 11:23:01

bucheron
Membre
Date d'inscription: 30-05-2008
Messages: 138

Re: Comment faire un union avec Zend_db_select ?

j'ai vraiment besoin d'un petit coup de main. Si une âme charitable passe dans le coin smile))

Hors ligne

 

#3 21-08-2008 14:10:17

fte
Membre
Lieu: 06 13 83
Date d'inscription: 16-05-2008
Messages: 112
Site web

Re: Comment faire un union avec Zend_db_select ?

Coucou,

Vu dans l'API et dans les tests unitaires :
http://framework.zend.com/apidoc/core/Z … html#union

trunk/tests/Zend/Db/Select/TestCommon.php :

Code:

       $sql1 = "SELECT $bug_id AS $id, $bug_status AS $name FROM $bugs";
        $sql2 = "SELECT $product_id AS $id, $product_name AS $name FROM $products";

        $select = $this->_db->select()
            ->union(array($sql1, $sql2))
            ->order('id');
        return $select;

Dernière modification par fte (21-08-2008 14:11:25)

Hors ligne

 

#4 25-08-2008 15:47:27

bucheron
Membre
Date d'inscription: 30-05-2008
Messages: 138

Re: Comment faire un union avec Zend_db_select ?

Merci pour la réponse,

Après avoir mis à jour ma version du framework j'essaye toujours de faire marcher l'Union.

Code:

    $cat = new Categorie();
    $cat3 = new Categorie();
        
    $select = $cat->select()->where("id_parent = ?", Env::categorie() );
    $select2 = $cat2->select()->where("id_cat = ?", Env::categorie() );

        $select3 =  $select2->union($select);
    echo $select3;

Lors de mon echo je n'ai que le résultat du 1er select mais pas de l'union des 2.

est ce que je l'utilise mal ???

Hors ligne

 

#5 21-10-2008 11:09:04

bucheron
Membre
Date d'inscription: 30-05-2008
Messages: 138

Re: Comment faire un union avec Zend_db_select ?

je fais un petit up du post car j'ai le même cas de figure ou je suis bloqué.
Si quelqu'un pouvait me dire pkoi le 1er select est affiché et non pas toute la requete avec l'union ?

Hors ligne

 

#6 21-10-2008 11:57:08

bucheron
Membre
Date d'inscription: 30-05-2008
Messages: 138

Re: Comment faire un union avec Zend_db_select ?

ok j'ai finalement réussit à faire marcher l'union mais seulement à moitié, je m'explique

Code:

$annonceJoin = new Annonce();    
$finalSelect = $annonceJoin->_db->select()->union( array( $sql1,  $sql2) );
annonceJoin->fetchAll($finalSelect);

ceci me génère un erreur:
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Alors que le code ci dessous fonctionne.

Code:

$annonceJoin = new Annonce();    
$finalSelect = $annonceJoin->_db->select()->union( array( $sql1,  $sql2) );
$annonceJoin->_db->fetchAll($finalSelect); //ici ce trouve le changement

je pense qu'il y a un problème d'accès, mais comment je peux le résoudre pour que cela m'envoi un objet et non un tableau de résultat ? (en gros comment faire marcher le code qui génère l'erreur)

merci

Hors ligne

 

#7 10-12-2008 14:53:50

mdelanno
Membre
Lieu: Nord
Date d'inscription: 26-08-2007
Messages: 90
Site web

Re: Comment faire un union avec Zend_db_select ?

bucheron a écrit:

Code:

$cat = new Categorie();
$cat3 = new Categorie();
        
$select = $cat->select()->where("id_parent = ?", Env::categorie() );
$select2 = $cat2->select()->where("id_cat = ?", Env::categorie() );

$select3 =  $select2->union($select);
echo $select3;

est ce que je l'utilise mal ???

Oui, il faut 3 objets Zend_Db_Select en tout. On construit les deux premiers, puis on en crée un troisième qui va réaliser l'union :

Code:

$select3->union(array($select1, $select2));

A noter : les règles de l'UNION SQL restent, il faut donc avoir les mêmes colonnes dans les deux select.

Dernière modification par mdelanno (10-12-2008 14:56:18)

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