У меня есть 3 таблицы: singers
, songs
, albums
.Все они связаны с singer_id
Мне нужно получить их все, даже если не найдено совпадений singer_id
.Мне удалось получить их все с помощью этого запроса:
SELECT singers.singer_name, albums.album_name, songs.song_name
FROM singers
LEFT JOIN albums ON singers.singer_id = albums.singer_id
LEFT JOIN songs ON albums.singer_id = songs.singer_id
WHERE singer_id = ?
Но проблема в том, что я не могу правильно отобразить результаты.
Допустим, у певца есть 3 альбома и 11 песен.Вот как я их отображаю ...
Отображение имени певца:
echo $results[0]['singer_name']
Отображение названий песен:
foreach($results as $song) {
// PROBLEM: instead of getting 11 songs i'm getting 33 results so each song show up 3 times.
echo $song['song_name']
}
Отображение альбомов:
foreach($results as $album) {
// PROBLEM: i'm getting 33 albums instead of 3 each album shows up 3 times.
echo $album['album_name']
}
РЕДАКТИРОВАТЬ: таблица песен имеет ссылку на таблицу альбомов album_id
, но есть песни без альбома, поэтому мне нужно получить результаты только по singer_id
что янужно получить это: 11 песен.3 альбома.1 певец.
спасибо заранее.
РЕДАКТИРОВАТЬ: это решение работало для меня.я хотел получить все песни для указанного идентификатора певца и альбомы, результаты которых я хотел, выглядит следующим образом.
singer_name : song_name : album_name
...............................................................
Jay Z : 99 Problems : NULL
Jay Z : Gotta Have It : Watch the Throne
, поэтому я хотел получить все песни певца, даже если их нет ни в одном альбоме..
это запрос, который я использовал.
SELECT singers.singer_name, songs.song_name, albums.album_name
FROM singers
LEFT JOIN songs ON singers.singer_id = songs.singer_id
LEFT JOIN albums ON albums.album_id = songs.album_id
WHERE singers.singer_id = ?
благодаря @knittl я получаю нужные мне результаты.
, но сейчас есть другая проблема.у меня 3 альбома и 11 песен
песни отображаются правильно, но когда я делаю цикл foreach
в альбомах, я снова получаю 33 альбома ....
как я могу отобразить альбомыправильно?у меня всего 3 альбома.