>백엔드 개발 >PHP 튜토리얼 >CodeIgniter Active Record를 사용하여 NOT IN 하위 쿼리로 SELECT 쿼리를 실행하는 방법은 무엇입니까?

CodeIgniter Active Record를 사용하여 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 쿼리 실행

이 시나리오에서는 ' '해지' 테이블에 없는 인증서' 테이블입니다. 이 쿼리에 대한 기존 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 Active Record를 사용하여 NOT IN 하위 쿼리로 SELECT 쿼리를 실행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.