2012-08-30 2 views
0

나는 두 개의 테이블이 아래와 같이 있습니다SQL Server의 테이블 쿼리 가입 2012

TableA --> categoryId(pk), categoryParentId, catName 
TableB --> empId(pk), categoryId, empName, empDesignation 

enter image description here

TableBcategoryId=2TableAcategoryParentId=2 같다 어디 TableA에서 각각의 카테고리 ID를 가진 모든 catName을 얻으려면 . 도와주세요.

결과 :

1002 SE 
1003 MD 
+0

, 당신은 당신이 당신의 결과처럼 보이도록 설정되어 좋아할 무엇을 제공 할 수 있습니까? – Khan

답변

-1

당신이 고유 catNames하려면이 트릭

SELECT tableA.catName 
FROM tableA, tableB 
WHERE tableB.categoryId = table1.categoryParentId 
    AND tableB.categoryId = 2; 

을해야한다,이 같은

SELECT distinct tableA.catName 
FROM tableA, tableB 
WHERE tableB.categoryId = table1.categoryParentId 
    AND tableB.categoryId = 2; 
+0

tableB의 categoryId가 2 인 경우 catName과 각 categoryId를 선택하십시오. – Shan

0

뭔가를 사용할 수 있습니까? INNER JOIN

SELECT DISTINCT catName FROM TABLEA WHERE categoryParentId IN (SELECT DISTINCT categoryID from TABLEB); 
+0

코드를 보내 주셔서 감사합니다. 검색어에서 원하는 부분이 조금만 변경되었습니다. 즉, tableB의 categoryId는 2이고 catName과 해당 categoryId를 모두 선택합니다. – Shan

0

솔루션 :

select TableA.catName 
from TableA 
inner join TableB on TableA.categoryParentId = TableB.categoryId 

INNER JOIN 사용은 (SELECT ... FROM TableA, TableB ... 반대) 테이블을 조인에 사용하는 권장되는 방법입니다

참조 :


(난 당신이 TableA에서 categoryId를 원 가정) 귀하의 코멘트에 대답 :

select TableA.catName, TableA.categoryId 
from TableA 
inner join TableB on TableA.categoryParentId = TableB.categoryId 
where TableB.categoryId = 2 
+0

tableB의 categoryId를 2로 지정하고 각 categoryId뿐만 아니라 catName을 선택합니다. – Shan

+0

@Sana : 내 대답을 편집했습니다! –

0

나는이 쿼리 요구 사항을 충족 바랍니다

,
0

다른 방법

SELECT TABLEA.CATNAME AS CATEGORY 
    from TABLEB INNER JOIN TABLEA 
    ON TABLEA.CATEGORYPARENTID = TABLEB.CATEGORYID 
... 명확성을 위해

SELECT 
    catname 
from 
    tablea a INNER JOIN 
    tableb b ON 
    a.categoryParentID = b.categoryID 
    group by 
    catname