GROUP_CONCAT中的MySQL GROUP_CONCAT

时间:2016-07-18 23:27:02

标签: mysql

我对MySQL不太熟悉,我正在尝试构建如何构建特定查询。

我很确定我需要在另一个GROUP_CONCAT中使用GROUP_CONCAT,但我无法在这种特定情况下找出正确的语法。

以下是我需要获取值的3个表的简化版本:

====================================
TABLE NAME : models

ModelID     ModelName    Year
------------------------------------
100         Mazda3       2015
101         Mazda3       2016

====================================


====================================
TABLE NAME : styles

ModelID     StyleID    Trim
----------------------------
100         200        GS
100         201        GX  
100         202        GT 
101         300        GS
101         301        GX
101         302        GT     

====================================


====================================
TABLE NAME : colors

ModelID     StyleID    GenericExtColor
--------------------------------------
100         200        Red
100         200        Blue  
100         201        Red 
100         201        Blue
100         202        Red
100         202        Blue  
101         300        Red
101         300        Blue  
101         301        Red 
101         301        Blue
101         302        Red
101         302        Blue  

==================================== 

我希望输出看起来像(html列表):

Mazda3 2015
----- GS
----------- Red
----------- Blue
----- GX
----------- Red
----------- Blue
----- GT
----------- Red
----------- Blue

Mazda3 2016
----- GS
----------- Red
----------- Blue
----- GX
----------- Red
----------- Blue
----- GT
----------- Red
----------- Blue

这是我目前使用的查询(只有2个级别(模型/修剪),因为我不知道如何获得第3层(颜色))

SELECT models.ModelID, models.ModelName, models.ModelYear,
GROUP_CONCAT(styles.Trim) AS trims
FROM models, styles
WHERE 
  models.ModelName LIKE '%Mazda3%' AND 
  styles.ModelID = models.ModelID
GROUP BY models.ModelID

我用来渲染查询结果的PHP:

<ul>
  while($row = mysql_fetch_assoc($result)) { 

    $trims = explode(",", $row['trims']);

    echo '<li>'.$row['ModelID'].'</li>';
    echo '<ul>';

      echo '<li>'.$row['ModelName'].'</li>';
      echo '<li>'.$row['ModelYear'].'</li>';

      echo '<ul>';
        foreach ($trims as $trim) {
          echo '<li>'.$trim.'</li>';
        }
      echo '</ul>';

    echo '</ul>';
  }
</ul>

如果需要,我可以提供更多信息。任何帮助将非常感谢!
谢谢

0 个答案:

没有答案