쿼리 개체를 사용하여 WHERE 절에서 AND와 OR을 결합하는 방법은 무엇입니까?


21

COND1 아래에 원하는 SQL, 주어 Cond2을 충족해야 또는 Cond3는 선택을 위해 충족되어야 사용하는 올바른 방법 무엇 getQuery()을 달성하기는?

원하는 SQL : 괄호 안의 Condition1 및 Condition2)

SELECT * FROM #__myTable 
WHERE (condition1=true AND condition2=true) OR condition3=true

체인 사용 : -> where ()에서 OR 지정

$query = $db->getQuery(true);
$query->select('* FROM #__myTable')
->where('condition1 = true AND condition2 = true','OR')
->where('condition3 = true');

결과 SQL : (SQL에 괄호가 없습니다)

SELECT * FROM scm_myTable
WHERE condition1 = true AND condition2 = true OR condition3 = true

-> where ()에서 OR을 지정하는 배열 사용

$query = $db->getQuery(true);
$conditions12 = array(
    'condition1 = true',
    'condition2 = true'
);
$conditions3 = array(
    'condition3 = true'
);
$query->select('* FROM #__myTable')
->where($conditions12, 'OR')
->where($conditions3);

결과 SQL : (SQL에 괄호가 없습니다)

SELECT * FROM scm_myTable
WHERE condition1 = true OR condition2 = true OR condition3 = true

답변:


20

Chaining과 함께 필요한 괄호를 포함하여 원하는 SQL을 생성했습니다.

체인 사용 : OR 지정 및 Cond1 / 2를 괄호로 묶기

$query = $db->getQuery(true);
$query->select('* FROM #__myTable')
->where('(condition1 = true AND condition2 = true)','OR')
->where('condition3 = true');

결과 SQL : (괄호 포함)

SELECT * FROM scm_myTable
WHERE (condition1 = true AND condition2 = true) OR condition3 = true

또는 어디에서나 사용하십시오.

$query = $db->getQyery(true);
$query->select('*')
->from($db->quoteName('#__myTable'))
->where($db-quoteName('condition3') . ' = TRUE')
->orWhere(array($db->quoteName('condition1') . ' = TRUE', $db->quoteName('condition2') . ' = TRUE'));
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.