您好我需要帮助尝试找出如何连接两个表并从varchar中检索值作为外键。 该表与下表类似。
TraderID - - 名称 - - Skill_ID
1 - - - - - - - 乔 - - - 1,2,3,4
2 - - - - - - - Bob - - - 1,3
3 - - - - - - - 汤姆 - - - 4,3,1
Skill_ID - - Skill_Title
1- - - - - - - 水管工
2- - - - - - -Bricklayer
3 - - - - - - 电工
4- - - - - - -Plasterer
我希望能够选择TraderId和Name并显示技能的名称而不是Skill_ID
TraderID - - 名称 - - 技能
1 - - - - - - - 乔 - - - 水管工,瓦工,电工,泥水匠
2 - - - - - - - Bob - - - 水管工,电工
3 - - - - - - - 汤姆 - - - 泥水匠,电工,水管工
答案 0 :(得分:0)
如果您可以更改表格的结构,我强烈建议您使用以下表格:
您可以轻松获得所需的结果:
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不是为此而构建的。此外,诸如添加,删除或订购承包商技能等操作也变得非常混乱。