簡體   English   中英

在MySQL中反規范化多對多關系

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM