zend frameowrkでこの種のクエリを実行することは可能ですか?
SELECT *
FROM `relations`
WHERE (root_type, root_id) IN ( ("PRJ", 12), ("PRJ", 13), ("GRP", 42))
2 つの列ではなく、1 つの列に IN 句を使用してクエリを作成する方法しか見つかりませんでした。
zend frameowrkでこの種のクエリを実行することは可能ですか?
SELECT *
FROM `relations`
WHERE (root_type, root_id) IN ( ("PRJ", 12), ("PRJ", 13), ("GRP", 42))
2 つの列ではなく、1 つの列に IN 句を使用してクエリを作成する方法しか見つかりませんでした。
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;
これは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) には、多くの場合、特定のタスクを達成するための多くの方法があります。