项目和项集的SQL查询设置详细信息

时间:2018-05-01 09:07:50

标签: sql sql-server

我有一个两个表,第一个是产品,它是商店产品和产品集主要细节这里是产品或产品集主要区别issetofitem = 1这里是产品集主要其他明智的单个产品和另一个表产品集详细信息是产品的外键,名称为 ItemSetMasterId

在表格结构下方请帮忙

enter image description here

3 个答案:

答案 0 :(得分:0)

如果我理解正确,这是union allinner join

的组合
select Srno, ProductCode, PartName, PartNo, 
      (case when issetofitem = 0 then 'product' else 'product set master' end) productinfo 
from product p union all
select p.Srno, p.ProductCode, p.PartName, p.PartNo, 
      'product set details' as productinfo 
from product p
inner join ProductSet s on s.ProductId = p.ProductId;

答案 1 :(得分:0)

根据您的数据,这似乎可以满足您的需求:

select p.srno, p.productcode, p.partname, p.partno,
       (case when p.issetofitem = 1 then 'Product Set Master' else 'Product' end)
from product p
union all
select p.srno, p.productcode, p.partname, p.partno,
       'Product Set Details'
from product p join
     productset ps 
     on p.productid = ps.productid;

我觉得数据中缺少某些内容 - 这似乎假设productdetails中的所有内容都在一个集合中。

答案 2 :(得分:0)

尝试此解决方案,它将适合您:

SELECT SrNo, ProductCode, PartName, PartNo, Detail FROM (
SELECT SrNo, ProductCode, PartName, PartNo,
    (CASE WHEN p.IsSetofitem = 1 THEN 'Product Set Master' ELSE 'Product' END) AS Detail,ProductId AS ParentId FROM Product 
UNION ALL
SELECT p.SrNo, p.ProductCode, p.PartName, p.PartNo,'Product Set Details' AS Detail, ps.ItemSetMasterId AS ParentId FROM Product p 
join ProductSet ps on p.ProductId = ps.ProductId
WHERE p.IsSetofitem = 1 ) 
ORDER BY ParentId