我有2张桌子:
表:电影
MovieID -- Name
1 -- Movie1
2 -- Movie2
表:类型
MovieID -- Type
1 -- DVD
1 -- Bluray
1 -- VCD
2 -- DVD
我需要一个查询来找到这一行:
Movie1:DVD – Bluray – VCD
我用了:
SELECT Movies.Name,IF(TYPE = 'DVD',1,0 ) AS DVD,IF(TYPE = 'Bluray',0 ) AS Bluray,IF(TYPE = 'VCD',0 ) AS VCD
FROM Movies LEFT JOIN Types ON Movies.MovieID = Types.MovieID
但它返回多板线:
Movies.Name -- DVD -- Bluray -- VCD
Movie1 -- 1 -- 0 -- 0
Movie1 -- 0 -- 1 -- 0
Movie1 -- 0 -- 0 -- 1
Movie2 -- 1 -- 0 -- 0
我想要:
Movie1 -- 1 -- 1 -- 1
Movie2 -- 1 -- 0 -- 0
最佳答案
这里可以使用
group_concat()
功能.
没有经过测试,但我认为这样的事情应该有效:
SELECT Movies.Name,group_concat(type separator ' - ') as type
FROM Movies
LEFT JOIN Types ON Movies.MovieID = Types.MovieID
group by Movies.Name