开发者社区> 问答> 正文
0
0
分享

SQL Server存储过程:如何在另一个表中查找至少包含相同数据的条目作为输入

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而不是手动打印它们。

展开
收起
祖安文状元 2020-01-06 12:03:03 546 0
举报
飞天免费试用计划
领取免费云资源,开启云上实践第一步
RDS SQL Server Serverless
2-4RCU 50GB 3个月
额度3个月内有效
云数据库 RDS SQL Server
基础系列 2核4GB
额度1个月内有效
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
SQL Server 2017 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等