如何从不同的表中获取数据

时间:2017-03-27 03:00:18

标签: sql sql-server inner-join

你能帮我解决这个问题吗?我必须使用内连接进行查询以从不同的表中获取数据。

这是我的疑问:

select 
    a.DocEntry,
    a.CardName,
    a.Address,
    a.Address2, 
    a.CardCode,
    a.TaxDate,
    b.Dscription, 
    b.Quantity,
    b.Price,
    b.GTotal,
    b.WhsCode,
    c.WhsName,
    d.CompnyName, 
    d.CompnyAddr, 
    d.Phone1,
    e.U_NAME
from OPOR a 
        inner join POR1 b on a.DocEntry = b.DocEntry
        inner join OWHS c on a.DocEntry = c.WhsCode
        inner join OADM d on a.DocEntry = d.CompnyName
        inner join OUSR e on a.DocEntry = e.U_NAME
where b.DocEntry = 36

但是我收到了这个错误:

  

Msg 245,Level 16,State 1,Line 1将nvarchar值'OEC Computers UK'转换为数据类型int时转换失败。

2 个答案:

答案 0 :(得分:0)

您正在将NVarchar列与int值或列进行比较。 如果此列包含至少一个无法转换的值,则抛出您提供的异常。 (sql server无法隐式解析值)

检查查询的这一部分,看起来像是在varchar列和整数列上进行连接

inner join OADM d on a.DocEntry = d.CompnyName
inner join OUSR e on a.DocEntry = e.U_NAME

如果有必要 - (不建议这样做) - 要进行类似的加入,您必须将int列转换为nvarchar ex:

inner join OUSR e on CAST(a.DocEntry AS NVARCHAR(255)) = e.U_NAME

以及

如果DocEntry的数据类型为NVarchar,则可能会抛出异常

b.DocEntry = 36

所以你必须使用而不是它

b.DocEntry = '36'

答案 1 :(得分:-1)

什么类型的列“DocEntry”,“WhsCode”,“CompnyName”,“U_NAME”?

“OEC Computers UK”无法转换为整数。

该列的数据必须是数字,否则您无法对其进行比较。

相关问题