我试图通过将另一个表中的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字段不接受多个逗号分隔的整数。
答案 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