2016-07-26 2 views
2

SQL 프로그래밍에 익숙하지 않아서 쉽게 들어갈 수 있습니다.SQL Left/Inner/Normal Join 대 where 조건문

현재 외부 매개 변수 중 하나의 값을 기반으로 결과를 출력하는 쿼리를 작성하고 있습니다. 구조는 현재 다음과 같이 찾고 :

@ShowEntireCategory bit = 0 

select distinct 
p.pk 
p.name 
--other columns 
from dbo.Project P 
--bunch of left joins 
where p.Status = 'Open' 
--other conditions 

내가 구현하는 시도하고있다 : ShowEntireCategory의 값이 1 일 때 그것은 내부의 모든 하위 범주의 기록을 표시합니다 (라디오 버튼의 선택을 통해 프로그램 변경) 카테고리. 값이 0이면 선택한 하위 범주의 레코드 만 표시되고 해당 범주의 다른 하위 범주는 그대로 유지됩니다.

최선의 방법으로 a research을 수행했으며 narrowed downWHERE 문 또는 JOINs으로 수정했습니다.

내가 알고 싶은 것은 : 이러한 접근법 중 어느 것을 시나리오에 사용해야합니까? 필자의 경우 우선 순위는 최적화 (최소 실행 시간) 및 구현 용이성입니다.

참고 : 여기 내 주요 목표는 여기에서 사용할 준비가 된 코드를받지 않는 것입니다 (예를 들어 코드 스 니펫이 환영 할만 함). 더 나은 방법을 알고 싶습니다. 그 방향으로 계속 연구 할 수 있습니다. .

미리 감사드립니다.

UPDATE가

내가 데이터베이스 구조에 대한 추가 연구를 수행하고, 질문

하나와 관련된 매개 변수를 좁힐 관리해야하는 것은 포함 dbo.Project 테이블입니다 : PK, CategoryKey (FK) (두 번째 표에 연결된 이름), 이름, 설명 및 다른 모든 매개 변수와 관련이 없습니다.

두 번째 것은 PK, AreaNumber, 이름, CategoryKey (FK), IsCategory (1 = 카테고리, 0 = 카테고리가 아님)가 포함 된 dbo.Area 테이블입니다.

미안하지만, 나는 급변하는 환경에서 일한다. 이것은 내가 쥐어 짜낼 수있는만큼이다. 충분하지 않다면 알려주십시오.

+0

이것은 범주와 하위 범주가 데이터베이스에 저장되는 방법에 따라 다소 달라질 수 있습니다. – BrandonM

+0

@BrandonM 명확하게 설명해 주시겠습니까? 지금 당장 대답 할 수있는 유일한 방법은 "하나의 범주에 4 개의 하위 범주가 있으며 각 하위 범주에는 자체 식별자가 있습니다"입니다. –

+0

테이블 구조와 샘플 데이터를 제공 할 수 있습니까?이상적인 SQL 문으로 우리는 테스트 환경을 설정할 수 있습니다. – Philipp

답변

0

제공된 정보를 사용하면 최상의 해결책은 WHERE 절과 JOINS의 조합을 사용하는 것입니다. 카테고리 인 모든 행을 선택하려면 업데이트에 설명 된 두 번째 테이블에서 WHERE 절을 사용해야 할 가능성이 높습니다. 그런 다음이 결과를 다른 테이블/데이터와 조인합니다. 마지막으로 CASE 절 (자세한 내용은 here)을 사용하여 변수를 확인하고 모든 범주가 ​​필요한지 또는 일부 범주 만 (WHERE 절을 추가로 처리 할 수 ​​있는지) 결정할 수 있습니다.

이 질문에 대한 답은 확실하지 않지만 자세한 답변을 보려면 데이터베이스 스키마에 대한 자세한 설명이 필요합니다.

+0

죄송합니다. 충분히 자세히 설명하지 않으 셨습니다. 하지만 귀하의 답변을 수락하고 추가 조사를 수행 할 것입니다. –