首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过关系连接SQL表时出现的问题

通过关系连接SQL表时出现的问题
EN

Stack Overflow用户
提问于 2019-05-15 18:22:32
回答 1查看 80关注 0票数 3

我目前在尝试对一些表运行查询时遇到问题。

下面是我正在尝试做的事情,我似乎就是不能让它工作。我还复制了constituent和gifts,向您展示软信用和礼物/constituents之间的关系

Link to Table Relations Image

代码语言:javascript
运行
复制
SELECT 
    Constituent.lookup_id,
    Constituent.name,
    SplitGifts.amount,
    SplitGifts.giftaidamount
FROM 
    dbo.Gifts Gifts
INNER JOIN dbo.Constituent Constituent
    ON Constituent.id = Gifts.constituent_id
INNER JOIN dbo.SplitGifts SplitGifts
    ON SplitGifts.giftid = Gifts.id
LEFT JOIN dbo.SoftCredit SoftCredit
    ON SoftCredit.giftid = Gifts.id
INNER JOIN dbo.Constituent Constituent_1
    ON Constituent_1.id = SoftCredit.constituentid
INNER JOIN dbo.Gifts Gifts_1
    ON Gifts_1.id = SoftCredit.giftid
INNER JOIN dbo.Package Package
    ON Package.id = SplitGifts.packageid
WHERE 
    Package.lookup_id = N'CORPCHAL'

基本上,我想要的金额和gift_aid_amount从SplitGifts成分名称和lookup_id从组成显示所有礼物,但是,如果存在软积分为该礼物,我需要它通过SoftCredit表-> Gifts -> SplitGifts ->字段获得相同的字段

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-15 19:27:21

如果下面的查询有效,您可以尝试一下。

代码语言:javascript
运行
复制
SELECT 
    Constituent.lookup_id,
    Constituent.name,
    SplitGifts.amount,
    SplitGifts.giftaidamount
FROM 
    dbo.Gifts Gifts
    LEFT JOIN dbo.SoftCredit SoftCredit ON SoftCredit.giftid = Gifts.id
    INNER JOIN dbo.Gifts Gifts_1 ON
        Gifts_1.id = SoftCredit.giftid OR
        (SoftCredit.giftid IS NULL AND Gifts_1.id = Gifts.id)
    INNER JOIN dbo.Constituent Constituent ON
        Constituent.id = SoftCredit.constituentid OR
        (SoftCredit.constituentid IS NULL AND Constituent.id = Gifts_1.constituent_id)
    INNER JOIN dbo.SplitGifts SplitGifts ON SplitGifts.giftid = Gifts_1.id
    INNER JOIN dbo.Package Package ON Package.id = SplitGifts.packageid
WHERE 
    Package.lookup_id = N'CORPCHAL'

它在SoftCredit中连接回礼物引用上的表Gifts (使用别名Gifts_1),如果没有SoftCredit,则连接回表本身。

Constituent以类似的方式联接:它根据SoftCredit.constituentid的值联接,当为NULL时,它回退到Gifts_1.constituent_id

所有关于礼物的后续加入都应该引用Gifts_1

不过我还没有测试过它。但它可能会为您提供一个可能的解决方案方向的提示。

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

https://stackoverflow.com/questions/56147023

复制
相关文章

相似问题

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