2013-05-29 49 views
1

如果之前有人问过这个问题,我很抱歉,但是我的问题的一部分是我不确定如何提问我的问题;)。开始了!从另一张桌子拉动描述

新手SQL程序员(SQL Server 2008 R2)。我基本上有3个表格:rma_headerrma_detailcode_type

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

rma#|原因|故障

1234 | 012 |中号

code_type表它们与描述的reasonfault码,例如

code_type | code_id | code_desc

X | 012 |有缺陷的材料

F | M |销售

我们针对X(出于原因)和F(用于故障)以及应用程序使用的一堆其他代码类型提供了多种代码类型。

所以,我想编写一个查询,其中包含的数据,也将放在代码的说明,而不是代码本身。

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

+0

请告诉我们你已经尝试过了。 StackOverflow不是“我可以haz codz”服务。 – HABO

+0

欢迎!如果您向我们展示您使用的实际SQL,则更容易理解您想要的内容。考虑编辑你的问题,并添加,但据我了解,你需要的只是另一个'code_type'表的连接... –

回答

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原因和错误代码可能为空,那么你需要一个左外连接,例如

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表,那么这几乎没有什么不同。

+1

你有一个type -o:'d.HeaderID - h.ID'应该是'在d.HeaderID = h.ID' –

+0

@托尼霍普金森非常感谢!我想我正在从一座小山爬出一座山! – jester7492

+0

我不得不同时找到这个难题。我认为大多数教程都认为它非常明显,他们不会提及它。 –

相关问题