我有2个表,1个表有1列带有唯一键,另一个表有多个唯一键列

问题描述 投票:0回答:1

表1

状态_id 详细_id region_id 客户名称
0000 1212 1112 杰克
0101 2222 1113 吉尔

表2

值_id 价值
0000 请求
0101 完成
1212 待定
2222 重新处理
1112 北美
1113 欧洲

结果

状态 细节 地区 客户名称
请求 待定 北美 杰克
完成 重新处理 欧洲 吉尔

我尝试过这个查询,还有其他方法吗?

select 
b.value AS status,
c.value AS detail,
d.value AS region,
a.cust_name
from table1 a
left join table2 b ON a.status_id =b.value_id
left join table2 c ON a.detail_id = c.value_id
left join table2 d ON a.region_id = d.value_id;
sql sql-server join left-join inner-join
1个回答
0
投票

您的查询适合给定的任务。但是,您不应该使用没有意义的表别名。 a、b、c什么也没说,很容易混淆。请使用助记别名,例如 s 表示状态,d 表示详细信息,r 表示区域。

但是您的数据模型存在一个问题。由于您将一张表用于不同的事情,因此无法保证数据的完整性。虽然您可以说必须在值表中找到 status_id、detail_id 和 Region_id,但 DBMS 不知道哪一行是哪一行。因此,您可能会存储状态 = 北美、详细信息 = 欧洲、区域 = 待处理的行。更改您的数据库并为每个实体创建一个表,以便弄清楚这一点。

© www.soinside.com 2019 - 2024. All rights reserved.