[英]denormalize many to many relationship in MySQL
我想在mysql中規范化許多關系。 為了以Json格式將Schema導入到MongoDB。
我有3張桌子:
Movies : id, title, url
Genres : id, genre
movie_genres : movie_id, genre_id
例
movie Table
id title link
1 star wars http://link-to-imdb
2 shrek http://link-to-imdb
movie_genres Table
movie genre
1 1
2 1
genres Table
id genre
0 unknown
1 action
2 comedy
3 drama
我想通過將流派移動到電影中作為數組或多個值將其轉換為單個表。
流派數量有限(只有15種)。
因此,表的最終輸出將是:
Movies : id, title, url, genre
在這里,類型將是多個值。
例:
id title link genre
1 star wars http://link-to-imdb action, drama, sci-fi
2 shrek http://link-to-imdb anime
我做到了-MySQL查詢 :
select M.id ,M.title ,M.release_date, M.video, M.IMDBURL, G.genre
from genres G, movie_genres MG, movies M
where M.id = MG.movie and MG.genre = G.id
但是根據類型的不同會導致很多重復。 如果我可以完全放棄流派,那就太好了。
因此,您應該使用GROUP_CONCAT()函數
SELECT movie.id, movie.title, movie.url, GROUP_CONCAT(g.genre SEPARATOR ', ') AS genres
FROM movie
LEFT JOIN movie_genres mg ON movie.id = mg.movie_id
LEFT JOIN genres g ON mg.genre_id = g.id
GROUP BY movie.id
我沒有測試上面的查詢(可能有一些錯別字),但我希望您能夠理解
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.