ホームページ >バックエンド開発 >PHPチュートリアル >CodeIgniter アクティブ レコードを使用して NOT IN サブクエリを含む SELECT クエリを実行する方法

CodeIgniter アクティブ レコードを使用して NOT IN サブクエリを含む SELECT クエリを実行する方法

Barbara Streisand
Barbara Streisandオリジナル
2024-11-26 11:35:11465ブラウズ

How to Execute a SELECT Query with a NOT IN Subquery using CodeIgniter Active Record?

CodeIgniter アクティブ レコード: NOT IN サブクエリを使用した SELECT クエリの実行

このシナリオでは、' からすべての行を取得する必要があります。 「revokece」テーブルに存在しない証明書テーブル。このクエリの従来の SQL 構文は次のとおりです。

SELECT *
FROM certs
WHERE id NOT IN (SELECT id_cer FROM revokace);

CodeIgniter のアクティブ レコード パターンを使用してこれを実現するには、「->where()」メソッドを利用できます。ただし、クエリ内の特殊文字との潜在的な競合に対処することが重要です。

解決策:

CodeIgniter の '->where()' メソッドは、カスタム クエリの受け渡しを便利にサポートしています。文字列をデータベースに直接送信します。これにより、クエリを次のように記述できます。

$this->db->select('*')
         ->from('certs')
         ->where('`id` NOT IN (SELECT `id_cer` FROM `revokace`)', NULL, FALSE);

このクエリでは、'NULL,FALSE' 引数により、CodeIgniter がエスケープを実行せず、サブクエリの整合性が維持されます。

オプションの代替案:

さらにコードを最適化するには、次のことを検討してください。 CodeIgniter サブクエリ ライブラリを使用します。専用のインターフェイスを提供することでサブクエリの作成を簡素化します。サブクエリ ライブラリを使用したクエリは次のようになります:

$this->db->select('*')
         ->from('certs');

$sub = $this->subquery->start_subquery('where_in')
                       ->select('id_cer')
                       ->from('revokace');

$this->subquery->end_subquery('id', FALSE);

以上がCodeIgniter アクティブ レコードを使用して NOT IN サブクエリを含む SELECT クエリを実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。