0

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

では、他にどのように Zend_Db と交差できるのでしょうか?

4

1 に答える 1

0

私はこれを言いたくありませんが、で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::assembleassembleforeach($intersect as $select) $sql .= ' INTERSECT ' . $select->assemble();

于 2011-07-20T19:17:40.633 に答える