【问题标题】:Lookup value from other sql table从其他 sql 表中查找值
【发布时间】:2015-03-31 11:13:11
【问题描述】:

我有如下sql语句:

select A.transactionNumber,
A.DealNumber      
A.Group
from TableOne A

inner join TableTwo B     
on A.transactionNumber = B.tranNumber     
where B.ID = 111111  

这会产生类似的东西

transactionnumber  |   DealNumber  |  Group
123                |   1           |   100
456                |   2           |   101

但是,还有另一个表 tableThree 将“组”转换为字符串。它看起来像这样:

Group | GroupLookup
100   | Lookup1
101   | Lookup2
102   | Lookup3

总之,我希望我的选择返回这个:

transactionnumber  |   DealNumber  |  Group
123                |   1           |   Lookup1
456                |   2           |   Lookup2

我完全确定这很简单,但是我是一个完整的新手,并且选择中的第一个加入的存在让我很困惑,我非常感谢任何帮助。

【问题讨论】:

    标签: sql oracle join


    【解决方案1】:

    如果我理解正确的话应该是这样的:

    select A.transactionNumber,
    A.DealNumber,     
    C.GroupLookup AS [Group]
    from TableOne A    
    inner join TableTwo B     
    on A.transactionNumber = B.tranNumber     
    inner join TableThree C
    on C.Group = A.Group
    where B.ID = 111111  
    

    【讨论】:

    • 感谢您的回答。您添加了第二个内部联接,但 tableTwo (B) 中没有 Group 字段。组在 tableThree 中,如果我将行 c.Group = B.Group 更改为 C.Group = A.Group 则返回的行数比我尝试查找组之前的查询多得多。
    • 所以你需要加入TableThreeGroupTableOneGroup。当您选择A.Group 并返回组号时,TableThree 中的列Group 也包含相同的组号,因此您需要加入它们,TableThree 中包含组名称的其他列是GroupLookup所以你需要使用它选择子句。现在检查答案。
    • 非常感谢 - 行数增加是由于表的内容,与查询无关。再次感谢 - 真的很有帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-07
    • 2019-10-27
    • 1970-01-01
    • 1970-01-01
    • 2020-05-15
    相关资源
    最近更新 更多