大家好,最近做mysql查询,遇到一个问题,希望大家可以帮忙解决一下:
有两个表,表1,product如下,一个产品可能同时属于两种类型。
product_id product_name product_type_id 
1          产品A        1,2 
2          产品B        2,3 
表2,type,如下:
product_type_id product_type_name 
1               类别1 
2               类别2 
3               类别3 
最后想实现如下的查询结果:
product_id product_name product_type_id product_type_name 
1          产品A        1,2             类别1,类别2 
2          产品B        2,3             类别2,类别3 请问该如何实现呢? 

解决方案 »

  1.   

    root@localhost : test 04:47:33>select * from ab;
    +------------+--------------+-----------------+
    | product_id | product_name | product_type_id |
    +------------+--------------+-----------------+
    |          1 | 产品A      | 1,2             |
    |          2 | 产品B      | 2,3             |
    +------------+--------------+-----------------+
    2 rows in set (0.00 sec)root@localhost : test 04:47:42>select * from ac;
    +-----------------+-------------------+
    | product_type_id | product_type_name |
    +-----------------+-------------------+
    |               1 | 类别1           |
    |               2 | 类别2           |
    |               3 | 类别3           |
    +-----------------+-------------------+
    3 rows in set (0.00 sec)root@localhost : test 04:47:44>select product_id,product_name,group_concat(product_type_name) as type from ab,ac where instr(ab.product_type_id,ac.product_type_id) group by product_id,product_name;
    +------------+--------------+-----------------+
    | product_id | product_name | type            |
    +------------+--------------+-----------------+
    |          1 | 产品A      | 类别1,类别2 |
    |          2 | 产品B      | 类别2,类别3 |
    +------------+--------------+-----------------+
    2 rows in set (0.00 sec)
      

  2.   

    select product_id,product_name,ab.product_type_id,group_concat(product_type_name) as typename from ab,ac where instr(ab.product_type_id,ac.product_type_id) group by product_id,product_name;
    +------------+--------------+-----------------+-----------------+
    | product_id | product_name | product_type_id | typename        |
    +------------+--------------+-----------------+-----------------+
    |          1 | 产品A      | 1,2             | 类别1,类别2 |
    |          2 | 产品B      | 2,3             | 类别3,类别2 |
    +------------+--------------+-----------------+-----------------+
      

  3.   

    select a.*,group_concat(b.product_type_name)
    from 表1 a, 表2 b
    where find_in_set(b.product_type_id, a.product_type_id)
    group by a.product_id