2013-09-22 3 views
1

SQL 쿼리를 사용하여 OR x = y 문을 사용하여 주어진 값의 수가 테이블에 이미 있는지 확인합니다. 그런 다음 결과에 행 수를 계산합니다.SQL 쿼리 - 어떤 논리 연산자가 참인지 확인합니다.

$exists = db_query("SELECT * FROM {leads_client} WHERE (companyName = '".$form_state['values']['company_name']."' 
         OR billingEmail = '".$form_state['values']['billing_email']."' 
         OR leadEmail = '".$form_state['values']['lead_email']."' 
         OR contactEmail = '".$form_state['values']['contact_email']."' 
         OR url = '".$form_state['values']['company_url']."') AND NOT 
         clientId = '".$clientId."'"); 

    if($exists->rowCount() > 0){ 
      //Do something 
    } 

여러 개의 쿼리를 사용하지 않고 어떤 OR 문이 사실인지 결정하는 가장 확실한 방법은 무엇입니까?

답변

1

당신은 선택의 원시 비교를 수행 할 수 있습니다

:

SELECT *, 
    companyName = '".$form_state['values']['company_name']."' AS companyNameMatch, 
    billingEmail = '".$form_state['values']['billing_email']."' AS billingEmailMatch, 
    ... 
FROM {leads_client} 
WHERE (companyName = '".$form_state['values']['company_name']."' 
     OR billingEmail = '".$form_state['values']['billing_email']."' 
     OR leadEmail = '".$form_state['values']['lead_email']."' 
     OR contactEmail = '".$form_state['values']['contact_email']."' 
     OR url = '".$form_state['values']['company_url']."') AND NOT clientId = '".$clientId."'"); 

이 같은 결과 집합을 반환합니다

|------------------|-------------------| 
| companyNameMatch | billingEmailMatch | 
|------------------|-------------------| 
| 0    | 1     | 
|------------------|-------------------| 

이렇게하면 1과 일치하는 항목을 알 수 있습니다.

0

당신은 충족 된 상태 같은 것을 추적 할 CASE 문을 추가 할 수 있습니다

SELECT * 
     ,CASE WHEN companyName = '".$form_state['values']['company_name']."' THEN 'condition1' 
      WHEN billingEmail = '".$form_state['values']['billing_email']."' THEN 'condition2' 
      ... 
     END 
FROM {leads_client} 
WHERE (companyName = '".$form_state['values']['company_name']."' 
     OR billingEmail = '".$form_state['values']['billing_email']."' 
     OR leadEmail = '".$form_state['values']['lead_email']."' 
     OR contactEmail = '".$form_state['values']['contact_email']."' 
     OR url = '".$form_state['values']['company_url']."') AND NOT 
         clientId = '".$clientId."'"); 
관련 문제