回答

收藏

SQL Select对单个表有多个引用

技术问答 技术问答 177 人阅读 | 0 人回复 | 2023-09-14

我有一个包含多个关系表的人SQL. U# G6 i. ]3 g0 r( |; H7 @
DB。主表中的一些字段多次引用另一个表。例如,假设我有一个销售数据库,负责多个州的销售。我的数据库State1,State2和State3字段,所有字段都映射回一个States表。我一生都不知道如何编写查询,以返回所有枚举状态的记录。如果我只需要一个State我会知道字段:
8 {8 `8 P) W- }- nSELECT Master.Name,State.Enumeration AS 'State'FROM MasterTable Master,StateTable StateWHERE Master.State1 = State.ID;如何为我的所有“州”字段扩展此字段?
! a3 H2 w: l6 d0 D谢谢。
; L& r, e% c( R! m; q                                                               
6 N3 D& r9 \1 U$ Y    解决方案:                                                                $ l; N) B" f) @0 G& i
                                                                从每个唯一的连接返回一列到状态:9 c+ E' m& f3 w
select m.Name,s1.Enumeration as State1,s2.Enumeration as State2,s3.Enumeration as State3from MasterTable mleft join StateTable s1 on m.State1 = s1.IDleft join StateTable s2 on m.State2 = s2.IDleft join StateTable s3 on m.State3 = s3.ID一列从三个连接中返回所有状态:; _5 _2 }% n9 s/ N% n* G
select m.Name,ISNULL(s1.Enumeration  ISNULL(s2.Enumeration  ISNULL(s3.Enumeration,'') as Enumerationfrom MasterTable mleft join StateTable s1 on m.State1 = s1.IDleft join StateTable s2 on m.State2 = s2.IDleft join StateTable s3 on m.State3 = s3.ID还有列查询…
+ G: O3 y2 s- Aselect m.Name,ISNULL((select Enumeration from StateTable where ID = m.State一、') as State1,ISNULL((select Enumeration from StateTable where ID = m.State二、') as State2,ISNULL((select Enumeration from StateTable where ID = m.State三、,') as State3from MasterTable m
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则