【问题标题】:Retrieve multi-level data in a single query - MySQL Group Concat在单个查询中检索多级数据 - MySQL Group Concat
【发布时间】: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

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    我的意思是你可以使用下一个查询:

    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`;
    

    MySQL fiddle

    结果

    +========+=========+===========+=============+============+======+
    | parent | sub     | sub_price | menu        | menu_price | dsc1 |
    +========+=========+===========+=============+============+======+
    | Apple  | iPhone  | $1000     | iPhone Plus | $1221      | (HI) |
    +--------+---------+-----------+-------------+------------+------+
    | Apple  | iPhone  | $1000     | iPhone Red  | $1600      | (HI) |
    +--------+---------+-----------+-------------+------------+------+
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-09
      • 2016-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-02
      • 1970-01-01
      • 2014-08-01
      相关资源
      最近更新 更多