有这样三个表,表1的数据为:
表2的数据为:
表3的数据为:
要创建图4这样的视图:
mysql语句该怎么写?
同事给出的建议是,先创建一个试图,将3个表联合起来,再从这个视图中将字段按照group by 和concat函数进行连接。
具体操作如下:
1 创建三表联合视图
select pp
.id
AS id
,pp
.planId
AS planId
,pp
.placeId
AS placeId
,place
.name
AS placeName
,plan
.name
AS name
from ((InspectionPlanPlace
pp
left join InspectionPlan
plan
on((pp
.planId
= plan
.id
))) left join InspectionPlace
place
on((place
.id
= pp
.placeId
)))
得到图5所示的视图:
对图5的视图进行再次筛选,
select vwInspectionPlanWithPlaces
.planId
AS planId
,vwInspectionPlanWithPlaces
.name
AS name
,group_concat(vwInspectionPlanWithPlaces
.placeName
separator ‘,’) AS placeName
from vwInspectionPlanWithPlaces
group by vwInspectionPlanWithPlaces
.planId
结果如图6所示: