首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个内连接SELECT查询不返回数据

多个内连接SELECT查询不返回数据
EN

Stack Overflow用户
提问于 2019-10-31 14:51:38
回答 1查看 84关注 0票数 0

这是一个存储过程,用于选择葡萄酒的完整详细信息。它将存储位置ID作为参数。

这是正确的构建,在结构上类似于我写的许多sp的工作,但是它不返回数据。我是不是漏掉了什么?

代码语言:javascript
复制
CREATE PROCEDURE [sp_retrieveInventory_Full]
(
    @StorageLocationID          [int]
)
AS
BEGIN
    SELECT  [WineName],
            [RackID],
            [RackColumn],
            [RackRow],
            [WineTypeID],
            [WineVarietyID],
            [VintnerName],
            [dbo].[Vintner].[Country],
            [dbo].[Vintner].[StateProvince],
            [dbo].[Vintner].[Region],
            [VendorName],
            [Vintage],
            [PurchaseDate],
            [PurchasePrice],
            [BottleSizeID],
            [ABV],
            [DrinkByDate],
            [FoodType],
            [TastingNotes],
            [RatedBy],
            [RatingScore]
    FROM    [dbo].[StorageLocation] 
            INNER JOIN [dbo].[Wine]
        ON  [dbo].[StorageLocation].[WineID] = [dbo].[Wine].[WineID]
            INNER JOIN [dbo].[Vintner]
        ON  [dbo].[Vintner].[VintnerID] = [dbo].[Wine].[VintnerID]
            INNER JOIN [dbo].[Vendor]
        ON  [dbo].[Vendor].[VendorID] = [dbo].[Wine].[VendorID]
            INNER JOIN [dbo].[Pairing]
        ON  [dbo].[Pairing].[PairingID] = [dbo].[Wine].[PairingID]
            INNER JOIN [dbo].[Rating]
        ON  [dbo].[Rating].[RatingID] = [dbo].[Wine].[RatingID]
    WHERE   [dbo].[StorageLocation].[StorageLocationID] = @storageLocationID
END
GO
EN

回答 1

Stack Overflow用户

发布于 2019-10-31 15:00:24

当查询重新运行无结果时,这是因为不存在满足where子句中条件的记录,或者,如果查询包含内部联接,则至少有一个joins on条件不返回任何记录。

要找出哪个连接搞乱了查询,最简单的方法是开始逐个删除连接,但要这样做,您必须首先更改select子句。

我喜欢这样做:从除了最后一个连接之外的所有连接开始-看看它是否返回任何记录:

代码语言:javascript
复制
SELECT  1
FROM    [dbo].[StorageLocation] 
        INNER JOIN [dbo].[Wine]
    ON  [dbo].[StorageLocation].[WineID] = [dbo].[Wine].[WineID]
        INNER JOIN [dbo].[Vintner]
    ON  [dbo].[Vintner].[VintnerID] = [dbo].[Wine].[VintnerID]
        INNER JOIN [dbo].[Vendor]
    ON  [dbo].[Vendor].[VendorID] = [dbo].[Wine].[VendorID]
        INNER JOIN [dbo].[Pairing]
    ON  [dbo].[Pairing].[PairingID] = [dbo].[Wine].[PairingID]
--        INNER JOIN [dbo].[Rating]
--    ON  [dbo].[Rating].[RatingID] = [dbo].[Wine].[RatingID]
WHERE   [dbo].[StorageLocation].[StorageLocationID] = @storageLocationID

如果不是,则注释掉下一个联接,然后再次运行查询。冲洗,然后重复。

但是,请注意,可能有多个内部联接阻止查询返回记录。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58638153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档