PHP:连接表查询以创建类别和子类别?

时间:2017-09-22 10:16:16

标签: php mysql

我有一个products表,如下所示:

id            di_make              di_model

1             Samsung               TV656  
2             Samsung               TV555
3              Sony                 LCD33  

我有一个makes表,看起来像这个(这是我用作类别表的表)

id            names              

1             Samsung              
2             Samsung             
3              Sony 

我需要创建这样的输出,因此当点击类别/制作时,下拉列表会将di_model(s)Subcategories表格显示为子类别:

http://jsfiddle.net/7NYhe/500/

我尝试了这个查询:

products

但这会创造这个:

http://jsfiddle.net/7NYhe/502/

基本上,它为每个子类别创建一个类别!

有人可以就此问题提出建议吗?

这是我的代码的一个有效的SQL错误:

http://sqlfiddle.com/#!9/4d9f68/1

2 个答案:

答案 0 :(得分:4)

您可以使用此查询

SELECT products.di_make, GROUP_CONCAT(products.di_model) as di_model 
FROM products LEFT JOIN makes ON products.di_make=makes.names 
GROUP BY products.di_make

你将使用它来获取这样的数据

di_make  di_model
Samsung  TV656,TV555
Sony     LCD33

如果某个类别包含多个产品,您将获得di_model字符串。现在您可以将该字符串分解。

$subcategories = explode(",",$make_model)
'<li class="dropdown">'.$make_names.'
    <ul>';
      foreach($subcategories as $sub){

        '<li>'.$sub.'</li>';

      }

    '</ul>
</li>';

你可以像你一样实现你的PHP。

答案 1 :(得分:1)

尝试此查询 -

SELECT products.di_make, MAX(products.di_model)
FROM products 
JOIN makes ON products.di_make=makes.names
GROUP BY products.di_make