项目和项目集详细信息的SQL查询
我有一个两个表,第一个表是product,它是store product和product set master details,这里是product或product set master之间的区别,其中issetofitem=1,这里是product set master other wise single product,另一个表是product set details,它是产品的外键,即名称ItemSetMasterId 下面的表格结构请对此提供帮助项目和项目集详细信息的SQL查询,sql,sql-server,Sql,Sql Server,我有一个两个表,第一个表是product,它是store product和product set master details,这里是product或product set master之间的区别,其中issetofitem=1,这里是product set master other wise single product,另一个表是product set details,它是产品的外键,即名称ItemSetMasterId 下面的表格结构请对此提供帮助 如果我理解正确,这是union all和
如果我理解正确,这是
union all
和内部联接的组合
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;
根据您的数据,这似乎符合您的要求:
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
中的所有内容都在一个集合中。试试这个解决方案它会对您有用:
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
你能恰当地描述一下吗?请给出一些样本数据。产品集详细信息应位于每个产品集主数据的下方