0
我不知道该如何命名,对不起,如果标题没有意义。我对此练习感到很困惑,这是数据库架构的一部分:
条形图(BarID,名称) 饮料(DrinkID,名称,TypeID) 出售(BarID,DrinkID,价格) 我的问题是我需要编写一个过程,该过程选择所有包含至少与该过程中使用变量(例如@barname)输入的酒吧相同饮料的酒吧。
例如,如果酒吧A销售威士忌和可乐,则需要选择所有至少出售威士忌和可乐的酒吧。
这是我使用游标进行的非常复杂的尝试,但是我不知道是否必须使用带有tbh的游标。我真的迷路了。
ALTER PROCEDURE similar
(@barname AS VARCHAR(30))
AS
BEGIN
SET NOCOUNT ON
DECLARE @db AS INT
SELECT @db = COUNT(*)
FROM Sells
WHERE BarID = (SELECT BarID FROM Bars WHERE Bars.Name = @barname)
SELECT BarID INTO #BarMinDb
FROM Sells
WHERE BarID != (SELECT BarID FROM Bars WHERE Bars.Name = @barname)
GROUP BY BarID
HAVING COUNT(DrinkID) >= @db
DECLARE @rn AS INT
DECLARE kurzor CURSOR FOR
SELECT BarID FROM #barMinDb
OPEN kurzor
FETCH NEXT FROM kurzor INTO @rn
WHILE @@FETCH_STATUS = 0
IF (SELECT DrinkID
FROM Sells
WHERE BarID = @rn) IN (SELECT DrinkID
FROM Sells
WHERE BarID = (SELECT Name FROM Bars
WHERE Bars.Name = @barname)
)
BEGIN
PRINT @rn
END
FETCH NEXT FROM kurzor INTO @rn
CLOSE kurzor
DEALLOCATE kurzor
END
也有人要求我选择它们,所以我想我需要使用SELECT而不是手动打印它们。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。