2016-01-25 39 views
0

我有這兩個表,我需要從ENT表中選擇一切,並顯示技能的名稱不ID。問題與SQL請求,多個ID

skill_1,skill_2,skill_3指idSkill從技能表

感謝您幫助

耳鼻喉科表:

+-------+---------+---------+---------+---------+ 
| idEnt | nameEnt | skill_1 | skill_2 | skill_3 | 
+-------+---------+---------+---------+---------+ 
|  1 | testA |  1 |  2 |  3 | 
|  2 | testB |  4 |  5 |  6 | 
+-------+---------+---------+---------+---------+ 

技能表:

+---------+-------------+ 
| idSkill | nameSkill | 
+---------+-------------+ 
|  1 | Storekeeper | 
|  2 | Designer | 
|  3 | Teacher  | 
|  4 | Baker  | 
|  5 | Gardener | 
|  6 | Secretary | 
+---------+-------------+ 
+2

你有沒有考慮過單獨的Ent-Skills表格?這樣不僅這個查詢更容易,而且您還可以擁有更多的靈活性。 我可能是錯的,但似乎不大可能每個'Ent'都有3個技能。 – Max

回答

0

有了這張表的結構,你需要加入skill表3倍ent表,用不同的別名每次:

select idEnt, nameEnt, s1.nameSkill as skill1Name, s2.nameSkill as skill2Name, s3.nameSkill as skill3Name 
from ent e 
inner join skill s1 on e.skill_1=s1.idSkill 
inner join skill s2 on e.skill_2=s2.idSkill 
inner join skill s3 on e.skill_3=s3.idSkill 

你可能要考慮改變你的表結構,並有entskill表之間的連接表那持有idEnt - idSkill對。

+0

謝謝你,夥計,它的工作:) –

+0

我很抱歉,但我怎麼做,如果我想也選擇每種技能的技能ID ..? –

+0

只需在選擇列表中包含該字段即可。但是您應該考慮更改現有的數據結構並在兩個表之間創建一個連接器表。後來你做這個改變就會變得越來越困難。 – Shadow