2012-08-30 78 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