Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 从不同的表返回多个值_Mysql - Fatal编程技术网

Mysql 从不同的表返回多个值

Mysql 从不同的表返回多个值,mysql,Mysql,我有一个关于我正在处理的问题: 我在数据库中有这5个表:项目,模型项目,类别,品牌,代码 项目: id(主要) 名字 模型项\u id 模型项: id(主要) 类别识别码 品牌识别码 类别: id(主要) 名字 品牌: id(主要) 名字 代码: id(主要) 项目编号 伊恩 PN 我从Items表中选择每个产品,该表在ModelItems中有一个模型,并通过该模型获得分配的Category.Name和Brand.Name,所有这些我都能处理,我的问题是Codes表。

我有一个关于我正在处理的问题:

我在数据库中有这5个表:
项目
模型项目
类别
品牌
代码

项目

  • 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中,您有点运气不佳。