ホームページ >バックエンド開発 >PHPチュートリアル >CodeIgniter アクティブ レコードを使用して NOT IN サブクエリを含む SELECT クエリを実行する方法
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 サイトの他の関連記事を参照してください。