【问题标题】:Select QUERY inner joining Fields to get text values instead of ID's选择 QUERY 内部连接字段以获取文本值而不是 ID
【发布时间】:2017-03-24 23:48:28
【问题描述】:

我有一张看起来像这样的桌子......

Tbl1
User           OriginalValue   NewValue            FieldName
MikeS          11              12                  Dept
BobL           140             141                 Position
JohnS          11 South St     13 South St         Address
JenB           9               12                  AmountPaid
BillyS         133             132                 Seller

这是桌子的样子。如果用户编辑了一条记录,我保存了原始值和新值。现在这就是我想要做的。我需要能够显示文本而不是 ID(数字)。除了(在本例中)AmountPaid 和 Address - 所有值都在 tblDefinition 中,看起来像这样.....

tblDefinition
ID              Name             Field
9               SomeValue        SomeX
10              SomeValue        SomeX
11              Accounting       Dept
12              Finance          Dept
132             Microsoft        Seller
133             Apple            Seller
140             Manager          Position
141             Entry            Position

所以我想包含一堆数据来说明 tblDefinition 的样子。我试图以某种方式使用 tbl1 中的字段和 ID 并将其与 tblDefinition 连接以获取文本值。我需要使用 FieldName,因为可能出现在 Original 和 New Values 中的某些值(例如 Fieldname = AmountPaid)在 tblDefinition 中有相应的值,但我实际上需要按原样显示该值 - 在本例中为 9 和 12 .

Select OriginalValue,  Newvalue, Field
from tblDefinitions
LEFT JOIN tblDefinitions on (tbl2.OriginalValue = tblDefinitions.ID and tbl2.NewValue=tblDefinitions.ID)

这就是我一直在尝试的方法,但这不会有任何结果 - 我真的很难弄清楚我是否可以在一个查询中执行类似的操作,或者我是否需要为每个字段执行多个联合在 tblDefinitions 或什么中有对应的文本值

编辑。也许像......

Select t2.Name as OriginalValue from 
tbl1 t1
inner join tblDefinitions t2 on t2.ID = t1.originalvalue
where field in ('Dept', 'Position', 'Seller') 

也许只要我只指定要查找的字段,就不会影响tbl1中的AMOUNT PAID等其他值

【问题讨论】:

  • 不可行吗?

标签: sql sql-server tsql select sql-server-2012


【解决方案1】:

如果我理解正确,您应该只加入定义表两次,一次用于原始名称,一次用于新名称。

SELECT tbl2.OriginalValue
    ,tdo.name as OriginalName
    ,tbl2.Newvalue
    ,tdn.name as NewName
    ,tbl2.user
FROM tblBHH_HXfieldChanges tbl2
LEFT JOIN tblDefinitions tdo
        on tbl2.OriginalValue = tdo.ID
left join tblDefinitions tdn 
        on tbl2.NewValue = tdn.ID

【讨论】:

  • 我想我需要使用 FieldNames 吗?你不认为,对于 AmountPaid - 这些值不应该来自 tblDefinitions 而是应该保持原样(9),但如果我针对 tblDefinitions 运行它,它会提取一个值。那是我的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-13
  • 2019-11-10
  • 2013-03-16
  • 2014-06-10
  • 1970-01-01
  • 2017-11-21
  • 2017-08-10
相关资源
最近更新 更多