SQL复杂查询

时间:2009-10-29 10:05:28

标签: sql

我有两个表:'类别'和'产品'。在类别I中,我有catidcat name。在产品表格中,我有item-iditem-namecatid

我需要做的是显示一个包含item namecategory name的结果。但类别名称将是多个。因此,一个产品可以有多个类别。

3 个答案:

答案 0 :(得分:4)

你可能想要创建三个表,因为连接表允许每一行在另一个表中有多行对应:

Category        : catid   catname
Product         : itemid  itemname
CategoryProduct : catid   itemid

因此,产品可以包含0个,1个或更多类别。

连接表的示例内容,对于具有相同两个类别的两个产品:

catid itemid        in CategoryProduct
  1     3
  1     4
  2     3
  2     4

答案 1 :(得分:2)

如果您的架构在产品表中有类别ID,那么不,一个产品不能有多个类别。如果您有另一个M:N表来将产品链接到类别,则应更新您的问题。

答案 2 :(得分:2)

回复你的评论:

  

产品表的类别ID   就像2,3,4所以1产品可以拥有   多个类别

如果您被允许更改表格结构,请务必遵循KLE的建议。这是理智和可维护的方法。

如果您无法更改表格结构,可以使用以下方式查询类别:

select *
from product p
inner join category c 
    on ',' + p.catid + ',' 
        like '%,' + cast(c.catid as varchar) + ',%'