diff --git a/src/libs/database/impl/Migration.cpp b/src/libs/database/impl/Migration.cpp index 6b00e9b5..fe858eda 100644 --- a/src/libs/database/impl/Migration.cpp +++ b/src/libs/database/impl/Migration.cpp @@ -1799,7 +1799,7 @@ INNER JOIN cluster_type ct ON ct.id = c.cluster_type_id WHERE ct.name = 'GENRE' GROUP BY c.name)"); utils::executeCommand(*session.getDboSession(), R"(INSERT INTO track_genre (track_id, genre_id) -SELECT tc.track_id, g.id FROM track_cluster tc +SELECT DISTINCT tc.track_id, g.id FROM track_cluster tc INNER JOIN cluster c ON c.id = tc.cluster_id INNER JOIN cluster_type ct ON ct.id = c.cluster_type_id INNER JOIN genre g ON g.name = c.name @@ -1826,7 +1826,7 @@ SELECT DISTINCT 0, c.name FROM cluster c INNER JOIN cluster_type ct ON ct.id = c.cluster_type_id WHERE ct.name = 'MOOD')"); utils::executeCommand(*session.getDboSession(), R"(INSERT INTO track_mood (track_id, mood_id) -SELECT tc.track_id, m.id FROM track_cluster tc +SELECT DISTINCT tc.track_id, m.id FROM track_cluster tc INNER JOIN cluster c ON c.id = tc.cluster_id INNER JOIN cluster_type ct ON ct.id = c.cluster_type_id INNER JOIN mood m ON m.name = c.name @@ -1853,7 +1853,7 @@ SELECT DISTINCT 0, c.name FROM cluster c INNER JOIN cluster_type ct ON ct.id = c.cluster_type_id WHERE ct.name = 'LANGUAGE')"); utils::executeCommand(*session.getDboSession(), R"(INSERT INTO track_language (track_id, language_id) -SELECT tc.track_id, l.id FROM track_cluster tc +SELECT DISTINCT tc.track_id, l.id FROM track_cluster tc INNER JOIN cluster c ON c.id = tc.cluster_id INNER JOIN cluster_type ct ON ct.id = c.cluster_type_id INNER JOIN language l ON l.name = c.name @@ -1880,7 +1880,7 @@ SELECT DISTINCT 0, c.name FROM cluster c INNER JOIN cluster_type ct ON ct.id = c.cluster_type_id WHERE ct.name = 'GROUPING')"); utils::executeCommand(*session.getDboSession(), R"(INSERT INTO track_grouping (track_id, grouping_id) -SELECT tc.track_id, g.id FROM track_cluster tc +SELECT DISTINCT tc.track_id, g.id FROM track_cluster tc INNER JOIN cluster c ON c.id = tc.cluster_id INNER JOIN cluster_type ct ON ct.id = c.cluster_type_id INNER JOIN grouping g ON g.name = c.name