SELECT name从连接表中连接表行id在父表列的集合中

时间:2016-01-30 14:35:44

标签: mysql join

我有两张桌子。 skilluserskill

技能行

type:1
name:'Web Development'
id: 1
type:1
name:'Graphic Design'
id: 2

userskill row

user_id: 1
skill_type: 1
skills: '1,2'

以下查询仅返回第一行,而不是我预期的两行。我想知道为什么,如果这种类型的加入甚至可能/一个好的做法。

查询

SELECT b.name,b.type 
FROM userskill a 
JOIN skill b ON a.skill_type=b.type 
WHERE a.user_id="1" AND b.id IN(a.skills)

您可能想知道为什么查询没有尝试约束skill_type这是因为我想返回所有用户技能的列表,然后可以按应用程序中的类型对其进行排序。在我看来,这比执行许多查询更合适。

1 个答案:

答案 0 :(得分:2)

用户技能表具有多个值的属性,您应该允许userskill表具有相同信息但技能不同的多行

示例:

user_id skill_type skill
1       1          1
1       1          2

在这种情况下,主键是所有属性

参考:How to store multiple values in single column where use less memory?

修改

查询将是:

SELECT b.name,b.type 
FROM userskill a 
JOIN skill b ON a.skill_type=b.type 
WHERE a.user_id="1"