首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Mysql >

一个MySQL字段包含多个ID怎么解决

2012-10-05 
一个MySQL字段包含多个ID如何解决大家好,最近做mysql查询,遇到一个问题,希望大家可以帮忙解决一下:有两个

一个MySQL字段包含多个ID如何解决
大家好,最近做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 

请问该如何实现呢? 


[解决办法]

SQL code
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)
[解决办法]
SQL code
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 |+------------+--------------+-----------------+-----------------+
[解决办法]
用GROUP_CONCAT即可
[解决办法]
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

热点排行