Создайте список названий альбомов и цены за единицу для исполнителя "Audioslave" из приведенной диаграммы ER в SQLite. - PullRequest
0 голосов
/ 13 января 2020

Учитывая диаграмму ER, может кто-нибудь предоставить мне код для SQLite, чтобы найти запрос, как задано в вопросе. enter image description here

Я использую базу данных Chinook

РЕДАКТИРОВАНИЕ - Ниже приведен код, который я прилагаю, который я использовал для получения запроса, но, к сожалению, полученный ответ неверен

SELECT a.Title, t.UnitPrice
FROM Albums a, Tracks t
WHERE t.AlbumId IN
      (SELECT a.AlbumId
       FROM Albums a
       WHERE a.ArtistID IN
             (SELECT ar.ArtistID
              FROM Artists ar
              WHERE ar.Name = 'Audioslave'))

Ответы [ 2 ]

1 голос
/ 13 января 2020

Это должно дать вам то, что вам нужно:

SELECT a.Title, t.UnitPrice
FROM Albums a 
INNER JOIN Tracks t ON a.AlbumId = t.AlbumId
INNER JOIN Artists ar ON ar.ArtistID = a.ArtistID 
WHERE ar.Name = 'Audioslave'

Если вы хотите сделать это, используя запрос, который вы написали, вам нужно добавить условие в предложение where внешнего запроса, чтобы присоединиться album и track таблицы (AND a.AlbumId = t.AlbumId):

SELECT a.Title, t.UnitPrice
FROM Albums a, Tracks t
WHERE t.AlbumId IN
      (SELECT a.AlbumId
       FROM Albums a
       WHERE a.ArtistID IN
             (SELECT ar.ArtistID
              FROM Artists ar
              WHERE ar.Name = 'Audioslave'))
AND a.AlbumId = t.AlbumId
1 голос
/ 13 января 2020

Вы можете достичь этого простым способом

SELECT DISTINCT a.Title, t.UnitPrice
FROM Albums a 
INNER JOIN Tracks t ON a.AlbumId = t.AlbumId
INNER JOIN Artists ar ON ar.ArtistID = a.ArtistID 

WHERE ar.Name = 'Audioslave'

Обновлено

Соотношение между albums и artist - 1-ко-многим, вы можете использовать DISTINCT, чтобы избежать дублирования.

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