一个MySQL字段包含多个ID如何解决

Figo 2012-09-13 03:34:53
大家好,最近做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

请问该如何实现呢?
...全文
563 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Figo 2012-09-16
  • 打赏
  • 举报
回复
感谢楼上诸位解惑,自己用二次查询也实现了该功能,但是没有大家的方式简单,非常感谢大家
ACMAIN_CHM 2012-09-13
  • 打赏
  • 举报
回复
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
wwwwb 2012-09-13
  • 打赏
  • 举报
回复
用GROUP_CONCAT即可
小小小小周 2012-09-13
  • 打赏
  • 举报
回复
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 |
+------------+--------------+-----------------+-----------------+
小小小小周 2012-09-13
  • 打赏
  • 举报
回复
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)

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧