【发布时间】:2021-07-20 05:32:39
【问题描述】:
我在一个表中有一个多级数据,如下所示。
- 类别/品牌通过父 ID 为空来标识。
- 产品通过与顶层对应的父 id 来标识 类别(中)。
- 每个产品还可以有一个基本版本的子类型或品种 - 这通过有一个对应于基本产品中间的子列来标识。
| mid | parent | sub | org | item | price | dsc1 |
|---|---|---|---|---|---|---|
| 1 | 1 | Apple | ||||
| 2 | 1 | 1 | iPhone | $1000 | (Description) | |
| 3 | 1 | 2 | 1 | iPhone Plus | $1200 | (Description) |
| 4 | 1 | 1 | iMac Basic | $600 | (Description) | |
| 5 | 1 | 4 | 1 | iMac 1TB | $900 | (Description) |
所需的输出是基本产品级别(不是 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
【问题讨论】: