从另一个表中提取描述

时间:2013-05-29 15:08:33

标签: sql sql-server sql-server-2008-r2

如果之前已经提出过这个问题,我会提前道歉,但部分问题是我不确定如何提问我的问题;)。我们走了!

Newbie SQL程序员(SQL server 2008 R2)。我基本上有3个表:rma_headerrma_detailcode_type

我正在rma_headerrma_detail表之间进行内部联接,以获取有关我们RMA的所有数据。一切都是爱,但我的问题是在两个字段中reasonfault)是存储在code_type表中的代码。所以数据出来了:

rma#|原因|故障

1234 | 012 |中号

code_type表中,他们有reasonfault代码及其说明,例如

code_type | code_id | code_desc

X | 012 |缺陷材料

F | M |销售

我们有多种代码类型用于X(由于原因)和F(用于故障)以及应用程序使用的一堆其他代码类型。

所以,我想编写一个包含数据的查询,并且还会在代码的描述中添加代码,而不是代码本身。

任何人都可以提供一些指导或链接,以便我可以学习如何做到这一点?提前谢谢!

1 个答案:

答案 0 :(得分:1)

这只是更多的联接 假设始终存在原因和故障代码,它应该看起来像这样。

Select * From rma_header h
Inner join rma_detail d on d.HeaderID = h.ID
inner join code_type r On d.ReasonCode = r.CodeId and r.Code_type = 'X'
inner join code_type f On d.FaultCode = f.CodeId and f.Code_type = 'F'

诀窍是你必须加入code_type两次,一次是出于理由,一次是为了错误。

如果rma_detail的原因和错误代码可以为null,那么你需要一个左外连接,例如

Select * From rma_header h
Inner join rma_detail d on d.HeaderID - h.ID
left join code_type r On d.ReasonCode = r.CodeId and r.Code_type = 'X'
left join code_type f On d.FaultCode = f.CodeId and f.Code_type = 'F'

如果你有一个reason_codes表和一个fault_codes表,那就差别不大了。