2013-03-02 2 views
1

이 조건 MySQL의 쿼리를 살펴 보시기 바랍니다 반환 행 수를 알아내는 :MySQL의 조건의 경우 쿼리 - 각 조건은

SELECT attr1,attr2,attr3 FROM table 
WHERE 
(attr1 LIKE '%cond1%' OR attr1 LIKE '%cond2%') 
OR 
(attr2 BETWEEN '30' AND '45') 
OR 
(attr3 IN ('cond3') AND attr3 = 'cond4' AND attr3 BETWEEN '18' AND '30') 
ORDER BY CASE 
WHEN (attr1 LIKE '%cond1%' OR attr1 LIKE '%cond2%') THEN 1 
WHEN (attr2 BETWEEN '30' AND '45') THEN 2 
ELSE 3 
END 

것은 내가 각 조건 MySQL과 PHP를 행의 수를 얻을 수있는 방법이 있나요 보고? 아니면리스 조건 3?

조건 3이 200 개의 행을 반환했다는 것을 알기 위해이 값을 PHP 변수에 저장해야합니다.

+0

조건 중 하나의 결과와 데이터를 얻으려면 두 가지 쿼리를 실행해야합니다. – mavrosxristoforos

답변

1

당신은 SUMSELECT에 대한 표현으로 (또는 COUNTELSE 결과로 NULL 사용)으로 CASE WHEN ... THEN ... ELSE ... END를 사용할 수 있습니다. 위 준의 예제를 사용하면 같은 것을 할 것입니다 :

SELECT 
    SUM(CASE WHEN attr1 LIKE '%cond1%' OR attr1 LIKE '%cond2%' THEN 1 ELSE 0 END) AS condition1count, 
    SUM(CASE WHEN attr2 BETWEEN '30' AND '45' THEN 1 ELSE 0 END) AS condition2count, 
    SUM(CASE WHEN attr3 IN ('cond3') AND attr3 = 'cond4' AND attr3 BETWEEN '18' AND '30' THEN 1 ELSE 0 END) AS condition3count 
FROM 
    table 
... 

가 데이터의 내용을 따라 몇 가지 행이 세 조건 중 하나 이상 일치하는, 그래서 수 있음을 명심하시기 바랍니다 3 카운트의 합계는 리턴 된 행 수보다 클 수 있습니다.