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_id | code_desc

X | 012 | 有缺陷的材料

F | 中号 | 销售量

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

因此,我想编写一个包含数据的查询,并且还将放入代码的描述,而不是代码本身。

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

4

1 回答 1

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 表,那么差别不大。

于 2013-05-29T15:31:35.663 回答