2014-12-17 5 views
2

브랜드, 제품 및 브랜드 제품의 테이블이 각각 3 개 있습니다. 테이블의 구조는 다음과 같습니다.특정 조건의 내부 조인베이스

Brand : id,BrandName 
Product : id,ProductName 
BrandProduct :id,Brandid,Productid,Prize,RetailerName 

제품 이름, 상금 및 소매상 이름을 표시하고 싶습니다. 이것은 내 검색어입니다.

select ProductName,Prize,RetailerName from BrandProduct BP 
inner join Product P 
on P.id = BP.Productid 

사용자 선택 브랜드, 해당 브랜드 레코드의해야 come.So 나는 사용자가 오지해야 브랜드의 결합, 브랜드를 선택하지 않을 때 query.It가 제대로

create proc_sample 
    @Brandid int = null 
    as 
    begin 
    select ProductName,Prize,RetailerName from BrandProduct BP 
    inner join Product P 
    on P.id = BP.Productid 
    inner join Brand B 
    on B.id = BP.Brandid 
    where (@Brandid is null or BP.Brandid= @Brandid) 
    End 

노력 변경되었습니다. 어떤 아이디어? 다이나믹 SQL이 그림으로 등장합니다. 다이나믹 SQL의 다른 대안

+1

올바른 청중에게 다가 가기 위해 질문에 올바르게 태그를 지정하십시오. –

+0

'왼쪽 가입 B 브랜드'를 의미합니까? – gknicker

답변

1

BrandProduct 테이블에 BrandId가 포함되어 있기 때문에 Brand 테이블에 가입 할 필요가 없습니다.

select ProductName,Prize,RetailerName from BrandProduct BP 
inner join Product P 
on P.id = BP.Productid 
where (@Brandid is null or BP.Brandid = @Brandid) 
관련 문제