Как бы я не хотел это говорить, но Zend_Db_Select
не поддерживает ничего с INTERSECT
. Вы должны будете использовать свою изобретательность, чтобы сделать это возможным. Вы можете расширить Zend_Db_Select
, чтобы добавить эту функцию, или построить строку SQL и использовать адаптер для извлечения записей.
Не должно быть слишком сложно выполнить следующее, расширив Zend_Db_Select
$sql1 = new My_Db_Select($db);
$sql1->from('tbl1');
$sql2 = $db->select();
$sql2->from('tbl2');
$sql1->intersect($sql2); // alternate usage, $sql1->intersect($sql2, $sql3, $sql4);
echo $sql1; // prints SELECT * FROM tbl1 INTERSECT SELECT * FROM tbl2
Для этого вам нужно будет создать хранилище для ваших пересекающихся объектов при добавлении объектов с помощью My_Db_Select::intersect
, а затем создать My_Db_Select::assemble
для первого вызова $sql = parent::assemble
, а затем перебрать части пересечения и добавить каждый вызов до assemble
на каждом. foreach($intersect as $select) $sql .= ' INTERSECT ' . $select->assemble();