表格中的数据:
ItemCode ItemName ItemGroup
SFD Softdrink NULL
CCL Coco Cola SFD
FNT Fanta SFD
SPR Sprite SFD
ACL Alchol
TQL Tequila ACL
VDK Vodka ACL
当用户找到“Softdrink”时,结果将是:
ItemCode ItemName
SFD Softdrink
CCL Coca Cola
FNT Fanta
SPR Sprite
我怎么能这样做?
谢谢。
答案 0 :(得分:0)
所有软饮料都在itemgroup sfd中。试试select itemcode, itemname from table where itemgroup = 'SFD'
;
除了Softdrink本身没有SFD作为其ItemGroup。您需要在查询中添加“或ItemCode ='SFD'”。我想知道这些类别是否可以进一步嵌套,在这种情况下,递归CTE可以解决这个问题
是的,要么在地方添加'或',要么递归。
答案 1 :(得分:0)
使用
select ItemCode, ItemName from Items
where itemCode in (select itemcode from Items where itemname = 'softDrink')
or itemGroup in (select itemcode from Items where itemname = 'softDrink')
可以进一步修改。
答案 2 :(得分:0)
WITH hier (code, name) AS
(
SELECT ItemCode, ItemName
FROM Table
WHERE ItemCode = 'SFD'
UNION ALL
SELECT ItemCode, ItemName
FROM hier
JOIN Table
ON ItemGroup = code
)
SELECT *
FROM hier
即使具有更深层次结构级别,也会选择项目(即,您可以Fanta Lemon
添加Fanta Orange
,ItemGroup = FNT
添加{{1}},此查询也会选择它们。