2014-12-16 3 views
1

내 머리가 붙어 있습니다. (제목 = 'T2'와 val> = 2)와 (제목 = 'T3'와 val> = 4)여러 기준에 따라 결과를 얻으십시오

:

내가 모두 기준에 일치하는 NR 번호를 찾을 싶습니다 : 나는 다음 원하는

그래서 결과는이 경우에 3을 다음과 같습니다

| nr | title | val  | 
|:------|--------:|:---------:| 
| 1  |  T1 | 1  
| 1  |  T2 | 5 
| 1  |  T3 | 3 
| 3  |  T1 | 2 
| 3  |  T2 | 2 
| 3  |  T3 | 4 

보시다시피

만 NR = 3 경기 모두 기준. nr = 3을 반환하는 쿼리는 어떻게 작성합니까? 물론

오른쪽 어려운해야하지
SELECT DISTINCT nr FROM table WHERE title = 'T2' AND val >= 2 AND title = 'T3' AND val >= 4 

작동하지 않습니다? 나는 한 번 자체에 테이블에 합류 비슷한 ...

+1

제목이 동시에 T2와 T3 *하지 않을 수 있습니다 * 당신은 아마 또는 의미, AND가 아닙니다. 문제는 요구 사항이 명확하지 않다는 것입니다. 당신은 기본적으로 당신의 질문에 SQL은 작동하지 않을 것이라고 말하고 있습니다. –

+0

그게 내 문제 야. 나는 의미한다. – Mike

+0

그럼 내가 어떻게 3 점을 얻는 지 모르겠다. 입력 한 설명은 레코드가없는 세트를 반환합니다. –

답변

1

이을 시도해보십시오.

SELECT nr 
FROM table 
WHERE (title = 'T2' AND val >= 2) OR 
     (title = 'T3' AND val >= 4) 
GROUP BY nr 
HAVING COUNT(1) = 2 
+1

와우. 이 매끄러운! – Mike

1

당신이 요구하는 쿼리는 않았다 :

SELECT DISTINCT nr FROM tbl WHERE title='T2' AND val >=2 
AND nr IN 
(
SELECT nr FROM tbl WHERE title='T3' AND val>=4 
) 
TBL이가 3 결과는 를 검색하는 테이블 인

3이 두 조건을 모두 충족하기 때문입니다. 더 많은 조건을 추가하려면

만 수행

SELECT DISTINCT nr FROM tbl WHERE title='T2' AND val >=2 
AND nr IN 
(
SELECT nr FROM tbl WHERE title='T3' AND val>=4 
) 
AND nr IN (SELECT nr FROM tbl WHERE {new_criteria_1}) 
AND nr IN (SELECT nr FROM tbl WHERE {new_criteria_2}) 
AND nr IN (SELECT nr FROM tbl WHERE {new_criteria_3}) 
Where {new_criteria_1,2,3....n} are the new criteria in the WHERE clause you want to match. 
+0

그건 정확히 내가 묻고있는 것입니다. 감사. 이 쿼리를 세 가지 기준 이상으로 확장 할 수있는 방법이 있습니까? – Mike

+0

예, 여러 기준을 추가 할 수 있습니다.그냥 다른 AND nr을 추가하십시오. ( ) {new_criteria} –

+0

네가 묻고있는 것을 볼 수 있듯이 네 질문을 다시 말하면서 사람들이 왜 그것을 이해하는 데 어려움을 겪었는지 이해할 수있다. –

관련 문제