Zend_Db_Select 对象是否支持相交?它支持联合(即这是可能的, $db->select->union($sql1,$sql2) ),但是当我查看文档时,没有像 intersect 这样的方法。
那么与 Zend_Db 有什么交集呢?
Zend_Db_Select 对象是否支持相交?它支持联合(即这是可能的, $db->select->union($sql1,$sql2) ),但是当我查看文档时,没有像 intersect 这样的方法。
那么与 Zend_Db 有什么交集呢?
尽管我不想这么说,但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();