2012-08-30 129 views
0

我有一個像下面兩個表:加入表查詢SQL Server 2012中

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

enter image description here

我想從TableA得到所有catName與各自的categoryId其中TableBcategoryId=2等於TableAcategoryParentId=2 。請幫忙。

結果:

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

像這樣的事情?

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

感謝您的代碼。我在查詢中想要的變化很小,即tableB的categoryId是2,並選擇catName以及相應的categoryId。 – Shan

0

INNER JOIN

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,並選擇catName以及相應的categoryId。 – Shan

+0

@Sana:編輯我的答案! –

0

我希望這個查詢將滿足您的需要

SELECT TABLEA.CATNAME AS CATEGORY 
    from TABLEB INNER JOIN TABLEA 
    ON TABLEA.CATEGORYPARENTID = TABLEB.CATEGORYID 
0

另一種方法......

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