2011-09-21 4 views
1

1 주 또는 2 주 중 하나 또는 둘 다를 선택할 수있는 쿼리를 얻었고 그 다음 주 1 결과 만 표시하는 방법을 찾아야하지만 둘 다 사용할 수있는 방법을 찾아야합니다 주. SQL 쿼리 문제 (오라클)

다음은이 다음과 같은 결과

week location 
46  VH209A 
46  VH209B 
46  VH20B 
46  VH20C 
47  VH209B 
47  VH20A 
47  VH20C 

난 단지 이러한 결과

week location 
46  VH209A 
46  VH209B 
46  VH20B 
46  VH20C 

을 보여주고 싶은 저를 제공

select * 
from table1 t1 
where t1.location = 'VH' 
and (t1.week = '46' or t1.week = '47'); 

설명 할 수있는 내 쿼리하지만 난 알고 싶어 다음 주에 사용할 수있는 레코드는

입니다. 617,451,515,
week  location 
47  VH209B 
47  VH20C 

그래서 내 원하는 결과는이 말이

week  location 2weeks 
46  VH209A  N 
46  VH209B  Y 
46  VH20B   N 
46  VH20C   Y 

희망 같은 것입니까?

원하는 아이디어를 어떻게 얻을 수 있습니까?

답변

2
SELECT 
    t1.week 
    , t1.location 
    , CASE WHEN t2.location is not null THEN 'Y' 
     ELSE 'N' 
    END AS hasmore 
FROM table1 t1 
LEFT JOIN (SELECT DISTINCT location FROM table1 WHERE week = '47') t2 
    ON (t1.location = t2.location) 
WHERE t1.location = 'VH' 
    AND t1.week = '46'; 
+0

덕분에 JOINS에 대한 자세한 내용을하지만 난'경우 when'을 넣어 –

+0

은'(t2.location가 null가 아닌)'비트와'없는 권리 parenthesis' 오류가 될 것 같다 대신에. – Johan

+1

Brilliant - thanks :) –

0

예를 들어 INNER JOIN 등을 사용해 보셨습니까? 왼쪽 또는 오른쪽 조인? 이를 통해 동일한 데이터로 테이블에 연결된 다른 테이블의 데이터에 액세스 할 수 있습니다.

귀하의 데이터베이스 구조에 대해 알지는 못하지만 몇 가지 데이터를 여러 테이블로 나누십시오. 이걸로 조인을 가진 쿼리를 실행할 것입니다. 예를

여러 테이블에 데이터를 분리해서하는 경우
select * from table1 LEFT JOIN table2.withdatajoinedtotable1 ON table2.week = table1.week WHERE table2.2weeks = 'Y' 

를 들어

, 당신은 조인 액세스 할 수 있습니다.

희망이 도움이됩니다.

대답에 대한 SQL JOINS