Как избежать дублирования строк с соединительной таблицей. (Как это использовать)? - PullRequest
0 голосов
/ 11 ноября 2019

Поскольку песня может иметь несколько авторов песен, а автор песен может писать несколько песен, я создал соединительную таблицу songwriter_track. Но я не уверен, как "комбинировать это" с моим обычным track столом. Я хочу иметь возможность выбирать атрибуты из моей таблицы track и одновременно получать авторов песен. Но, к сожалению, мое текущее решение возвращает дубликаты песен. Что я делаю не так? Есть ли способ решить это? Должен ли я выполнить два запроса?

Вот мои столы:

   TABLE track(
         track_id     INT PRIMARY KEY
         track_title       VARCHAR(100)
         track_duration    VARCHAR(100)
         lyric_url         VARCHAR(150))

  TABLE songwriter(
        songwriter_id INT  PRIMARY KEY
        songwriter_name VARCHAR(30)  
        UNIQUE INDEX (songwriter_name))

  TABLE songwriter_track(
        id_songwriter INT REFERENCES songwriter(songwriter_id)
        id_track      INT REFERENCES track(track_id)
        PRIMARY KEY (id_songwriter, id_track))


 VIEW `tracks_view` AS "
      "SELECT t.*, s.songwriter_name  "
           "FROM track t "
           "INNER JOIN songwriter_track st "
           "ON t.track_id = st.id_track "
           "INNER JOIN songwriter s "
           "ON s.songwriter_id = st.id_songwriter;";
...