Поскольку песня может иметь несколько авторов песен, а автор песен может писать несколько песен, я создал соединительную таблицу 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;";