gpt4 book ai didi

sql - TSQL 连接查询

转载 作者:行者123 更新时间:2023-12-02 07:41:22 26 4
gpt4 key购买 nike

Employee Table:
Empid FNAme LName Hair Race
1 john adam 1 1
2 clift susanne 2 3

Code Table:
code type description
1 hair black
2 hair brown
1 race black
3 race white

我们需要获取输出数据为 empid, Fname, Lname, Hair, Race ;其中hairrace不是显示为代码,而是代码表中的描述。

我是sql初学者,请问你能帮忙写一个查询吗我没有得到以下查询的预期输出

select E.Empid,E.FName,E.Lname,c.description as Hair,c.description as race
From Employee2 E inner join code c
on (c.code = E.Hair )

最佳答案

你应该加入你的代码表两次:

  • 一次弄头发
  • 一次参加比赛

SQL语句

SELECT E.EmpID
, E.FName
, E.LName
, c1.Description AS Hair
, c2.Description AS Race
FROM Employee E
INNER JOIN Code c1 ON c1.Code = e.Hair AND c1.type = 'hair'
INNER JOIN Code c2 ON c2.Code = e.Race AND c2.type = 'race'

请注意,如果其中任何一个可以为 NULL,您可能希望将 INNER JOIN 更改为 LEFT OUTER JOIN


也就是说,我建议您为头发和种族创建一个单独的代码表

试图将所有内容都转储到一个代码表中只会让人们感到困惑,并迫使您最多只能编写次优查询。您强制自己将类型添加到代码表和您将创建的每个连接。

更好的选择是

Employee Table:
Empid FNAme LName Hair Race
1 john adam 1 1
2 clift susanne 2 3

HairCode Table:
code description
1 black
2 brown

RaceCode Table:
1 black
3 white

并将你的陈述简化为

SELECT E.EmpID
, E.FName
, E.LName
, c1.Description AS Hair
, c2.Description AS Race
FROM Employee E
INNER JOIN HairCode c1 ON c1.Code = e.Hair
INNER JOIN RaceCode c2 ON c2.Code = e.Race

您将免费获得更好的性能和更小的占用空间。

关于sql - TSQL 连接查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10845201/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com