Zend_Db_Select オブジェクトは Intersect をサポートしていますか? ユニオンをサポートしています(つまり、これは可能です、 $db->select->union($sql1,$sql2) )が、ドキュメントを見ると、intersectのようなメソッドはありません。
では、他にどのように Zend_Db と交差できるのでしょうか?
Zend_Db_Select オブジェクトは Intersect をサポートしていますか? ユニオンをサポートしています(つまり、これは可能です、 $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();