SQL将多个列连接到不同的行

时间:2016-04-19 21:02:39

标签: sql sql-server

我有两个表名称Combine和Product,结合了多个产品并且合并了严格的3个产品,所以我有两个表格如下所示:

Combine | id | name   | image                   | item1 | item2 | item3
          1  | exmpl  | www.exmpl.com/exmp.jpg  | 3     | 2     | 16 

Product | id | name          | image                           | stock   
          2  | productexmpl  | www.product.com/product2.jpg    |  3    
          3  | productexmpl2 | www.product.com/product3.jpg    |  7 
          16 | productexmpl3 | www.product.com/product16.jpg   |  3 

我想得到的是通过组合ID搜索SELECT * FROM Combine Where id = ''并获取不同行中的产品组合,我尝试过的是与SELECT * FROM Combine as c JOIN Product as p on c.item1 = p.id AND c.item2 = p.id AND c.item3 = p.id连接的表格,但它水平加入信息我想要的是垂直获取信息,这意味着在不同的行中,如下所示

  id | name          | image                           | stock   
  2  | productexmpl  | www.product.com/product2.jpg    |  3    
  3  | productexmpl2 | www.product.com/product3.jpg    |  7 
  16 | productexmpl3 | www.product.com/product16.jpg   |  3 

我不知道结构是否因设计错误,但感谢任何帮助

谢谢

1 个答案:

答案 0 :(得分:1)

您可以尝试此查询:

SELECT p.id, p.name, p.image, p.stock
FROM Combine as c
inner join
Product as p
on (c.item1=p.id or c.item2=p.id or c.item3=p.id)
Where id = ###