mySQL:使用varchar中的值连接2个表

时间:2015-08-05 15:48:00

标签: mysql

您好我需要帮助尝试找出如何连接两个表并从varchar中检索值作为外键。 该表与下表类似。

Table_Contractor

TraderID - - 名称 - - Skill_ID

1 - - - - - - - 乔 - - - 1,2,3,4

2 - - - - - - - Bob - - - 1,3

3 - - - - - - - 汤姆 - - - 4,3,1

Table_Trade

Skill_ID - - Skill_Title

1- - - - - - - 水管工

2- - - - - - -Bricklayer

3 - - - - - - 电工

4- - - - - - -Plasterer

我希望能够选择TraderId和Name并显示技能的名称而不是Skill_ID

TraderID - - 名称 - - 技能

1 - - - - - - - 乔 - - - 水管工,瓦工,电工,泥水匠

2 - - - - - - - Bob - - - 水管工,电工

3 - - - - - - - 汤姆 - - - 泥水匠,电工,水管工

1 个答案:

答案 0 :(得分:0)

如果您可以更改表格的结构,我强烈建议您使用以下表格:

  • 承包商:id,name
  • contractor_skill:contractor_id,skill_id
  • 技能:id,title

您可以轻松获得所需的结果:

   SELECT c.id, c.name, GROUP_CONCAT(s.title) skills
     FROM contractor c
LEFT JOIN contractor_skill cs
       ON cs.contractor_id = c.id
LEFT JOIN skill s
       ON s.id = c.skill_id

使用您当前的结构,要加入表格,您需要从每个承包商的csv列表中提取每个skill_id并将其加入相关技能.MySQL不是为此而构建的。此外,诸如添加,删除或订购承包商技能等操作也变得非常混乱。