如何在自依赖表上实现内连接

时间:2014-11-02 10:48:00

标签: sql-server database join self-join

Categories

1 | Pen       | 3
2 | Book      | 3
3 | Education | null
4 | Shirt     | null

Product

1 |  10.00 | Parker-Pen   | the description | 1000  | 1
2 |  35.00 | Dairy        | the description | 500   | 2
3 |  9.00  | Dux-Pen      | the description | 1000  | 1
4 | 350.00 | GeographyMap | the description | 30    | 3
4 | 250.00 | PoloShirt    | the description | 100   | 4

这些是我实际检索其类别ID为3的产品的表。

以下是我用来检索数据的查询

select p.name, c.name 
from product p 
    inner join Categories c on p.Categories_id=c.id 
    inner join Categories c2 on c2.id=3 or c2.parent=3

它实际上是在多次检索数据。并且还有poloshirt,它不属于类别ID。

您能解释一下问题是什么,以及对产品进行分类的更好方法

1 个答案:

答案 0 :(得分:0)

如果只允许一个级别的层次结构,您应该得到这样的查询答案:

select p.name, c.name 
from product p 
    inner join Categories c on p.Categories_id=c.id 
where c.id=3 or c.parent=3