php - 在单个查询中检索多级数据 - MySQL Group Concat
问题描述
我在一个表中有一个多级数据,如下所示。
- 类别/品牌通过具有空父 ID 来标识。
- 产品通过具有对应于顶级类别(中)的父 ID 来标识。
- 每个产品也可以有一个基本版本的子类型或品种——这是通过有一个对应于基本产品中间的子列来标识的。
中 | 父母 | 子 | 组织 | 物品 | 价格 | dsc1 |
---|---|---|---|---|---|---|
1 | 1 | 苹果 | ||||
2 | 1 | 1 | 苹果手机 | 1000 美元 | (描述) | |
3 | 1 | 2 | 1 | iPhone 加 | 1200 美元 | (描述) |
4 | 1 | 1 | iMac 基础版 | 600 美元 | (描述) | |
5 | 1 | 4 | 1 | iMac 1TB | 900 美元 | (描述) |
所需的输出是基本产品级别(不是 null parent + null sub),它必须包含顶级类别以及所有子品种和描述:
Apple $1000 iPhone $1200 iPhone Plus (Description)
Apple $600 iMac Basic $900 iMac 1TB (Description)
我正在尝试使用 SQL 做所有可能的事情,但我无法将所有内容合并到一个查询中——我不想先检查类别,然后再对单个产品进行查询。
SELECT *, IF(parent IS NULL, item, mid) AS topcategory FROM table where org = "1";
我也在尝试使用 GROUP_CONCAT 没有任何运气: https://phpize.online/?phpses=5c149faca3e15d3bcd7f4c0e437c28ff&sqlses=c40160db7e24f450d3055397db86aeda&php_version=php8&sql_version=mysql57
解决方案
我的意思是你可以使用下一个查询:
SELECT
`parent`.`item` `parent`,
`sub`.`item` `sub`,
`sub`.`price` `sub_price`,
`menu`.`item` `menu`,
`menu`.`price` `menu_price`,
`menu`.`dsc1`
FROM `menu`
JOIN `menu` `sub` on `sub`.`mid` = `menu`.`sub`
JOIN `menu` `parent` on `parent`.`mid` = `menu`.`org`;
结果
+========+=========+===========+=============+============+======+
| parent | sub | sub_price | menu | menu_price | dsc1 |
+========+=========+===========+=============+============+======+
| Apple | iPhone | $1000 | iPhone Plus | $1221 | (HI) |
+--------+---------+-----------+-------------+------------+------+
| Apple | iPhone | $1000 | iPhone Red | $1600 | (HI) |
+--------+---------+-----------+-------------+------------+------+
推荐阅读
- r - 数据框中的异常值,但我想对 R 中数据框中的分组行执行此操作
- r - 如何计算因子 cat 的每个类别的数据框数据中变量 x 和 y 之间的相关性?
- java - 如何以编程方式在 log4j2 中正确使用 RoutingAppender?
- reactjs - 为什么以及何时 Cordova 比 React Native 更好?
- ios - 如何在运行时检测应用程序使用 swift
- r - 是否有 R 命令来确定数据帧值是否可以转换为数字格式?
- javascript - 为什么记录到控制台的数据值有效,但分配给变量时无效?
- excel - 将值从工作表传递到模块
- python - 尝试使用 Conda 安装 TensorFlow 1.15 但总是得到 1.9.0
- flask - Flask - 我需要在上传到 S3/Google Cloud 时使用 secure_filename() 吗?