Petit mémo directement prit de la documentation officielle du framework Zend pour combiner les résultats de deux requêtes en utilisant UNION avec Zend_Db_Select :
$sql1 = $db->select();
$sql2 = "SELECT ...";
$select = $db->select()
->union(array($sql1, $sql2))
->order("id");
Pour un UNION ALL, il suffit de passer la constante Zend_Db_Select::SQL_UNION_ALL en second paramètre :
$select = $db->select()
->union(array($sql1, $sql2), Zend_Db_Select::SQL_UNION_ALL)
->order("id");
Et en passant, pour aider à débugguer un peu les requêtes Zend_Db_Select, il est possible d’utiliser la méthode __toString() pour afficher la requête exécutée. En exemple, il suffit d’ajouter ceci en fin du code ci-dessus :
echo $select->__toString();