我的數據庫中有四個表格: 包含ID(PK)和名稱的人員。包含ID(PK),PID(FK),技能(FK)和SkillLevel(FK)的Person_Skill。 包含ID(PK)和SkillLabel的技能。 包含ID(PK)和名稱的SkillLevel。我應該在SQL中使用哪種加入方式
每個技能有從0到7
現在我想顯示所有的人都有的技術水平(附上skilllevel = 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級的原因是因爲人表只包含從1級到7級的技能,但我不確定這個。我從其他人那裏得到了數據庫。如果我的假設是正確的,是否有這樣做?獲得技能表中的所有技能並顯示該人的技能水平(包括skillllevel = 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
你可以給樣品記錄? – 2013-04-05 15:55:27