gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 08:40:56 26 4
gpt4 key购买 nike

我正在尝试通过将另一个表中的 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

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

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

最佳答案

使用 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,则可以使用 phpexplode 函数爆炸单元格,然后循环访问单元格以访问所有单元格值。

编辑:

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

关于MySQL - 从一个表到另一个表的引用数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13795597/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com