我的数据库中有四个表:包含 ID(PK) 和名称的人员。Person_Skill 包含 ID(PK)、PID(FK)、Skill(FK) 和 SkillLevel(FK)。包含 ID(PK) 和 SkillLabel 的技能。包含 ID(PK) 和名称的技能级别。
每个技能都有从0到7的等级
现在我想显示该人拥有的所有技能(包括技能级别 = 0)
Select
[dbo].Person.Name as Name,
[Skill].SkillLabel as SkillName,
[Person_Skill].[SkillLevel] as SkillLevel
From
([dbo].Person inner join [dbo].[Person_Skill] ON [dbo].[Person_Skill].PID= Person.ID)
inner join [dbo].[Skill] ON [dbo].[Person_Skill].Skill=Skill.ID
上面的代码只显示了这个人从1级到7级的技能。
我相信我只获得 1 到 7 级技能的原因是因为 person 表只包含 1 到 7 级的技能,但我不确定这一点。我从其他人那里得到了数据库。如果我的假设是正确的,有没有办法做到这一点?获取技能表中的所有技能并显示该人拥有的技能等级(包括技能等级=0)。
Sample Data:
Person
ID Name
----------
1 Michael
2 Alex
Person_Skill
ID PID SkillID Skill_Level
5 1 10 5
6 2 11 1
7 1 12 7
8 1 13 5
Skill
ID Name
10 java
11 C++
12 HTML
13 ASP
14 C
15 .NET
16 C#
17 Objective
The expect results are;
Name SkillName SkillLevel
----------------------------
Alex java 0
Alex C++ 1
Alex HTML 0
Alex ASP 0
Alex C 0
Alex .NET 0
Alex C# 0
Alex Objective C 0
Michael java 5
Michael C++ 0
Michael HTML 7
Michael ASP 0
Michael C 0
Michael .NET 5
Michael C# 0
Michael Objective C0
当前查询只输出
Alex C++ 1
Michael java 5
Michael HTML 7
Michael .NET 5