MySQL - 从一个表到另一个表的引用数据

时间:2012-12-10 05:38:02

标签: mysql database

我试图通过将另一个表中的id列入另一个表的行中的特定字段来连接表。

这就是我要做的;

表项目

Id   Name    Price
 1   Drink   5
 2   Food    3

表格字符

Id   Name   Cash   Inventory 
 1   Foo    10     1
 2   Bar    10     2
 3   Stu    10     1, 2

我正在尝试引用这些项目,以便在我提取有关Character'Stu'的数据时 它提取与项目1和1相关的数据。 2'因为他有他们的库存。

我已经阅读了规范化和外键,但却找不到以我想要的方式将它们联系在一起的方法。我还发现INT字段不接受多个逗号分隔的整数。

2 个答案:

答案 0 :(得分:1)

你正在努力建立一对多的关系。您需要将外键放入表项,即CharacterId。然后你可以用JOIN来提取数据。

答案 1 :(得分:1)

这应该很容易使用FIND_IN_SET查看你的表格结构这里是解决方案

SELECT 
    * 
FROM `characters` as c
LEFT JOIN items as i on FIND_IN_SET(i.id, c.Inventory)
WHERE c.name= 'Stu'

编辑:

这里编辑的解决方案意味着一线解决方案。

SELECT 
    c.* ,
    group_concat(i.name) as ItemName,
    group_concat(i.price) as ItemPrices         
FROM `characters` as c
LEFT JOIN items as i on FIND_IN_SET(i.id, c.Inventory)
WHERE c.name= 'Stu'
group by c.name

如果您使用的是php,可以使用php explode函数爆炸单元格,然后遍历单元格以访问所有单元格值。

编辑:

SELECT 
    c.* ,
    group_concat(i.id) as ItemIds,
    group_concat(i.name) as ItemName,
    group_concat(i.price) as ItemPrices         
FROM `characters` as c
LEFT JOIN items as i on FIND_IN_SET(i.id, c.Inventory)
WHERE c.name= 'Stu'
group by c.name