Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 19-02-2010 11:20:28

j3ff_std
Nouveau membre
Date d'inscription: 29-01-2010
Messages: 7

Zend_Db_Select et Union

Bonjour

Dans les unions le nombre de colonnes dans les requêtes est identique.
Si j'ai plusieurs colonnes dont j'ai besoin dans une table et d'autre dans une autre table, il me faudra le même nombre de colonnes pour exécuter l'UNION...
Comment faire avec Zend?

J'ai essayé cela:

Code:

$select1 = $this->table1->select()->setIntegrityCheck(false)
            ->from (array('t1' => "table1"), array('c1' => 'colonne1', 'c2' => 'colonne2'))        

$select2 = $this->table2->select()->setIntegrityCheck(false)
            ->from (array('t2' => "table2"), array('c1' => 'colonne1', 'c2' => ' '))     

 $select = $db->select()
            ->union(array($select1, $select2))

Il me retourne:

Code:

SELECT `t1`.`colonne1` AS `c1`, `t1`.`colonne2` AS `c2`
FROM `table1` AS `t1`

UNION

SELECT `t2`.`colonne1` AS `c1`, `t2`.`` AS `c2`
FROM `table2` AS `t2`

et l'erreur:
Unknown column 't2.' in 'field list' ce qui est normal...



Comment faire avec zend? Pour obtenir:

Code:

SELECT `t1`.`colonne1` AS `c1`, `t1`.`colonne2` AS `c2`
FROM `table1` AS `t1`

UNION

SELECT `t2`.`colonne1` AS `c1`, ' '  AS `c2`
FROM `table2` AS `t2`

Comme ceci, ça fonctionne...


Merci d'avance de votre aide

Hors ligne

 

#2 19-02-2010 13:18:21

etaty
Membre
Date d'inscription: 16-10-2008
Messages: 49

Re: Zend_Db_Select et Union

il me semble que ce n'est pas possible d'exécuter une requête dans un union avec un Zend_db_select
(car ce n'est pas valide avec toutes les sgbd)
il faut que tu passe directement par l'adaptateur et la méthode query()

edit: désolé, je me suis trompé, j'ai confondu avec un join

Dernière modification par etaty (20-02-2010 00:03:23)

Hors ligne

 

#3 19-02-2010 15:36:57

j3ff_std
Nouveau membre
Date d'inscription: 29-01-2010
Messages: 7

Re: Zend_Db_Select et Union

je serais obligé de faire une requête en dur?
du genre:

Code:

$sql1 = "SELECT t1.colonne1 AS c1, t1.colonne2 AS c2
FROM table1 AS t1";

$sql2 = "SELECT t2.colonne1 AS c1, ' '  AS c2
FROM table2 AS t2";

$requete= $sql1 . " UNION ALL " . $sql2;
    
$tab = $this->_db->fetchAll($requete);

Ce n'est pas possible avec $db->select() ->union ...  ?

Hors ligne

 

#4 19-02-2010 17:12:06

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

Re: Zend_Db_Select et Union

Juste de mémoire car c'est un truc que j'ai fait il y a super longtemps

Code:

$db->select()
->from('table1', array('c1' => 'colonne1', 'c2' => 'colonne2' ))
->where('ICI Condition sur Table1')
->union(
  $db->select()
  ->from('table2', array('c1' => 'colonne1', 'c2' => 'colonne2' ))
  ->where('ICI Condition sur Table2'),
  Zend_Db_Select::SQL_UNION_ALL
)

c'est à voir précisément dans la doc mais le principe est celui-ci

A+JYT

Dernière modification par sekaijin (19-02-2010 17:15:03)

Hors ligne

 

#5 22-02-2010 09:11:22

j3ff_std
Nouveau membre
Date d'inscription: 29-01-2010
Messages: 7

Re: Zend_Db_Select et Union

oui mais mon champs table2.colonne2 n'existe pas... donc il me réenverra une erreur fait comme ça

Hors ligne

 

#6 22-02-2010 14:45:34

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

Re: Zend_Db_Select et Union

pour une colonne à valeur fix il faut utiliser Zend_Db_Expr
un truc genre

Code:

  $db->select()
  ->from('table2', array('c1' => 'colonne1', 'c2' => new Zend_Db_Expr(' ')))
  ->where('ICI Condition sur Table2')

A+JYT

Hors ligne

 

#7 22-02-2010 16:14:28

j3ff_std
Nouveau membre
Date d'inscription: 29-01-2010
Messages: 7

Re: Zend_Db_Select et Union

Ok Merci ça fonctionne via:

Code:

'c2' => new Zend_Db_Expr('\'\'')

Mais après avoir fait:

Code:

    $select = $this->_db->select()
            ->union(array($select1, $select2));

il me lance:
{"error":"erreur durant la construction du contr\u00f4leur","str_error":"\nException : Zend_Db_Select_Exception\nMessage : Unrecognized method 'union()'\n"}


J'ai installé la version 1.9 du framework...
Faut-il installé la version suivante pour qu'il reconnaisse la fonction UNION ?

Hors ligne

 

#8 22-02-2010 18:00:21

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

Re: Zend_Db_Select et Union

je ne sais pas à partir de quelle version

Hors ligne

 

#9 23-02-2010 17:07:38

j3ff_std
Nouveau membre
Date d'inscription: 29-01-2010
Messages: 7

Re: Zend_Db_Select et Union

j'ai mis à jour vers la 1.10 et ça fonctionne ;-)

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