表關系圖:
需求:
我想要查詢的數據結果是:
我們可以內連接:
select s.id,s.name,srt.typeId, stt.name as TypeName from scenics as s INNER JOIN( select * from scenics_type ) srt on srt.scenicsId=s.id INNER JOIN( SELECT * from scenicstype where deleted=0 )stt on stt.id=srt.typeId
得到結果是:
顯然我們需要分組,合並一下數據。
select s.id,s.name,srt.typeId, stt.name as TypeName from scenics as s INNER JOIN( select * from scenics_type ) srt on srt.scenicsId=s.id INNER JOIN( SELECT * from scenicstype where deleted=0 )stt on stt.id=srt.typeId GROUP BY(s.id)
得到結果是:

但是TypeName累加成我們想要的結果。
MySQL給我們一個好用的方法實現這個目標。group_concat
select s.id,s.name,srt.typeId, group_concat(stt.name SEPARATOR ',' ) as TypeName from scenics as s INNER JOIN( select * from scenics_type ) srt on srt.scenicsId=s.id INNER JOIN( SELECT * from scenicstype where deleted=0 )stt on stt.id=srt.typeId GROUP BY(s.id)
結果如圖:
OK 大功告成!
