не отображается должным образом в «Имя» в SQlite Пример - PullRequest
0 голосов
/ 04 июня 2018
SELECT "Title", "Name" FROM "albums"
LEFT JOIN "artists" ON "artists. ArtistId" = "albums. ArtistId"

Я хочу использовать левый оператор соединения, чтобы выставлять только атрибуты заголовка и имени таблицы альбомов и таблицы исполнителей.Если вы посмотрите на сайт http://www.sqlitetutorial.net/, на который я ссылаюсь, я думаю, что применил его правильно, но значения name не отображаются должным образом.Что я делаю не так?

  • В БД есть таблица «альбомы» и таблица «артисты», элементы «AlbumId», «Название» и «ArtistId» в таблице «альбомы» и «ArtistId»Элементы 'и' Name 'в таблице' Artist '.

Для справки, DB - это образец DB, загруженный из http://www.sqlitetutorial.net/

введите описание изображения здесь

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Вы можете заключать в кавычки имена таблиц / столбцов, но это не обязательно, если они не являются ключевыми словами SQL.

В любом случае, artists.ArtistId содержит два имен, которые должны быть указаны в кавычках отдельно:

... ON "artists"."ArtistId" = "albums"."ArtistId"
0 голосов
/ 04 июня 2018

Поскольку ОП уточнил, с какого сайта он получал БД, отредактировал его сейчас ...), попробуйте что-то вроде (не проверено, но я думаю, что должно работать, предполагая, что таблицы ОБА имеют НАЗВАНИЕ и ИМЯ - если нет, измените соответственно)

select alb.Title as AlbumTitle, 
art.Name as ArtistName
from albums alb
left join artists art on (art.artistid=alb.artistid)

Это должно работать.Если этого не произойдет, то у вас может быть альбом с исполнителем, которого не существует.Как сказал кто-то другой, вам не нужно заключать в кавычки все поля и имена таблиц, и использование псевдонимов для таблиц, а не полных имен таблиц немного чище (IMO)

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