Почему этот запрос не находит всю песню с отметкой A? - PullRequest
1 голос
/ 19 июня 2020

Я пытаюсь найти все песни с буквой A в моей базе данных, но в некоторых случаях не все песни появляются. Кто-нибудь знает?

SELECT Song.Titel, Artist.ArtistName, Song_Playlist.PlaylistID
FROM Song INNER JOIN Song_Playlist ON Song.ID = Song_Playlist.SongID
  LEFT JOIN Song_artist ON Song.ID = Song_artist.SongID
  LEFT JOIN Artist ON Artist.ID = Song_artist.ArtistID 
WHERE Song.Titel LIKE '%a%'

Содержание таблицы

Результат запроса

Ответы [ 2 ]

2 голосов
/ 19 июня 2020

Использование INNER JOIN приводит к тому, что запрос показывает записи из таблицы Song, которые имеют соответствующую запись в таблице Song_Playlist. Я предполагаю, что в таблице Song_Playlist нет записей об отсутствующих песнях.

0 голосов
/ 19 июня 2020

Вместо INNER JOIN попробуйте использовать LEFT JOIN, потому что INNER JOIN возвращает результат, если он находит совпадающие строки с обеих сторон таблицы.

INNER JOIN зависит от строк Song и Song_artist, а вы не предоставили строки этих двух таблиц.

Поэтому попробуйте использовать LEFT JOIN.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...