1

zend frameowrkでこの種のクエリを実行することは可能ですか?

SELECT * 
FROM `relations` 
WHERE (root_type, root_id) IN ( ("PRJ", 12), ("PRJ", 13), ("GRP", 42))

2 つの列ではなく、1 つの列に IN 句を使用してクエリを作成する方法しか見つかりませんでした。

4

2 に答える 2

2

JOIN代わりに、次のようにできます。

SELECT r.*
FROM relations r
INNER JOIN
(
   SELECT 'PRJ' AS root_typ, 12 AS root_id
   UNION ALL 
   SELECT 'PRJ',             13
   UNION ALL 
   SELECT 'GRP',             42
) AS t  ON r.root_type = t.root_type
       AND r.root_id   = t.root_id;
于 2013-02-05T11:36:19.437 に答える
1

これはZend_Db_Statement を使用した ZF1 クエリです。

//common way to aquire currently selected db adapter
$db = Zend_Db_Table::getDefaultAdapter();
//$db is the currently selected database adapter.
$stmt = $db->query(
            SELECT * FROM `relations` 
            WHERE (root_type, root_id) 
            IN ( ("PRJ", 12), ("PRJ", 13), ("GRP", 42))
            );

この回答は、中傷することを意図したものではありません。複雑なデータベース クエリの場合、Zend_Db_Statement多くの場合、クエリを実行する最も簡単/単純/最良の方法です。

ニーズに合わせた説明が必要な場合は、構造に関する詳細情報を提供してください。Zend Framework (1 または 2) には、多くの場合、特定のタスクを達成するための多くの方法があります。

于 2013-02-06T14:09:51.880 に答える