Mysql 从不同的表返回多个值
我有一个关于我正在处理的问题: 我在数据库中有这5个表:Mysql 从不同的表返回多个值,mysql,Mysql,我有一个关于我正在处理的问题: 我在数据库中有这5个表:项目,模型项目,类别,品牌,代码 项目: id(主要) 名字 模型项\u id 模型项: id(主要) 类别识别码 品牌识别码 类别: id(主要) 名字 品牌: id(主要) 名字 代码: id(主要) 项目编号 伊恩 PN 我从Items表中选择每个产品,该表在ModelItems中有一个模型,并通过该模型获得分配的Category.Name和Brand.Name,所有这些我都能处理,我的问题是Codes表。
项目
,模型项目
,类别
,品牌
,代码
项目:
- id(主要)
- 名字
- 模型项\u id
- id(主要)
- 类别识别码
- 品牌识别码
- id(主要)
- 名字
- id(主要)
- 名字
- id(主要)
- 项目编号
- 伊恩
- PN
我从Items表中选择每个产品,该表在ModelItems中有一个模型,并通过该模型获得分配的Category.Name和Brand.Name,所有这些我都能处理,我的问题是Codes表。在代码中,有多个EAN和PN值分配给一个项目\ id,我真的不知道如何访问它 现在我想到了这个:
SELECT Items.*, Category.name as category, Brand.name as brand,
FROM Items
JOIN ModelItems ON ModelItems.id = Items.ModelItems_id
JOIN Category ON Category.id = ModelItems.Category_id
JOIN Brand ON Brand.id = ModelItems.Brand_id
WHERE Brand.name = ?
它不能处理代码问题。我试着搜索类似的东西,但什么也找不到。我希望此查询的输出如下所示:
id, Name, ModelItems_id, category, brand, [EAN, EAN, EAN], [PN, PN, PN]
我希望我的解释足够清楚:-)怎么样
SELECT Items.*, Category.name AS category, Brand.name AS brand,
(SELECT group_concat(EAN SEPARATOR ', ') FROM Codes WHERE Codes.Items_id = Items.id GROUP BY Codes.Items_id) AS ean_list,
(SELECT group_concat(PN SEPARATOR ', ') FROM Codes WHERE Codes.Items_id = Items.id GROUP BY Codes.Items_id) AS pn_list
FROM Items
JOIN ModelItems ON ModelItems.id = Items.ModelItems_id
JOIN Category ON Category.id = ModelItems.Category_id
JOIN Brand ON Brand.id = ModelItems.Brand_id
WHERE Brand.name = ?
怎么样
SELECT Items.*, Category.name AS category, Brand.name AS brand,
(SELECT group_concat(EAN SEPARATOR ', ') FROM Codes WHERE Codes.Items_id = Items.id GROUP BY Codes.Items_id) AS ean_list,
(SELECT group_concat(PN SEPARATOR ', ') FROM Codes WHERE Codes.Items_id = Items.id GROUP BY Codes.Items_id) AS pn_list
FROM Items
JOIN ModelItems ON ModelItems.id = Items.ModelItems_id
JOIN Category ON Category.id = ModelItems.Category_id
JOIN Brand ON Brand.id = ModelItems.Brand_id
WHERE Brand.name = ?
如何分配这些多个值?它们是管道分隔值吗?您可以显示一些示例数据吗?代码表中的值仅引用项目表中的值,且值为Items_id,没有任何链接。”“代码中有多个EAN和PN值分配给一个项目_id,我真的不知道如何访问它。”“关于这一点,EAN和PN中的多个值是如何存储的?”?它是管道分隔的吗?我想答案是
groupby
和groupconcat
(后者是mysql特有的!)在纯sql中,你有点运气不佳。这些多个值是如何分配的?它们是管道分隔值吗?您可以显示一些示例数据吗?代码表中的值仅引用项目表中的值,且值为Items_id,没有任何链接。”“代码中有多个EAN和PN值分配给一个项目_id,我真的不知道如何访问它。”“关于这一点,EAN和PN中的多个值是如何存储的?”?它是管道分隔的吗?我认为答案是groupby
和groupconcat
(后者是特定于mysql的!)在纯sql中,您有点运气不佳。