如何在sql中从单个连接中获取多个列名?

时间:2014-04-19 12:25:25

标签: sql sql-server inner-join

不确定问题的标题是对还是错。

我有两张桌子

Category: CategoryID,CategoryName ,ParentCategoryID
ref_Product_Category: CategoryID, ProductID

我写过这样的查询,

 SELECT  R.productID,
         C.ParentCategoryID,
         C.categoryName

 FROM    Category C 
         INNER JOIN ref_Product_Category R
            ON C.categoryID = R.categoryID

所以它在结果中返回了4列,但现在我想要另一个包含的列 ParentCategoryID的类别名称。 我不知道该怎么做。类别表是自引用表。

3 个答案:

答案 0 :(得分:2)

尝试使用表格本身Left outer join(因此,如果使用INNER JOIN并且未指定ParentCategoryID,我们不会丢失任何行:

SELECT  R.productID,
         C.ParentCategoryID,
         C.categoryName,
         ISNULL(C1.CategoryName, '') as ParentCategoryName
 FROM    Category C 
         INNER JOIN ref_Product_Category R
            ON C.categoryID = R.categoryID
         LEFT OUTER JOIN Category C1 on Category.ParentCategoryID = C1.CategoryID

答案 1 :(得分:1)

试试这个:

 SELECT  R.productID,
         C.ParentCategoryID,
         C.categoryName,
         C.CategoryName,
         CP.CategoryName as ParentCategory
 FROM    Category C  
 INNER JOIN ref_Product_Category R ON C.categoryID = R.categoryID
 INNER JOIN Category CP ON Cp.CategoryID=C.ParentCategoryID

答案 2 :(得分:0)

试试这个。

SELECT  R.productID,
         C.ParentCategoryID,
         C.categoryName, p.ParentCategoryName

 FROM    Category C 
         INNER JOIN ref_Product_Category R
            ON C.categoryID = R.categoryID INNER JOIN ParentCategory p on p.ParentCategoryID=c.ParentCategoryID