Переписать готовый запрос в другом виде
SELECT DISTINCT Book.Name AS BookName, Author.Name AS AuthorName
FROM Book JOIN Author ON Author.ID = Book.AuthorID
JOIN Rating ON Rating.BookID = Book.ID
WHERE CAST(ReleaseYear AS varchar(4))
NOT LIKE '%' + CAST(Rate AS varchar(2)) + '%'
Всем добрый вечер, подскажите пожалуйста, можно ли написать этот запрос как то иначе. Само задание запроса выглядит так.
Выбрать список книг с именем автора, у которых есть оценка не совпадающая ни с одной из цифр в годе выпуска книги. Книги не должны повторяться
Я написал этот запрос, но он не подходит, хотя выполняет то, что мне нужно.
Ответы (1 шт):
Автор решения: i-one
→ Ссылка
можно ли написать этот запрос как то иначе
Вместо DISTINCT и JOIN Rating можно использовать коррелированный подзапрос c EXISTS:
SELECT
Book.Name AS BookName,
Author.Name AS AuthorName
FROM Book
JOIN Author ON Author.ID = Book.AuthorID
WHERE EXISTS (
SELECT *
FROM Rating
WHERE Rating.BookID = Book.ID
AND CAST(ReleaseYear AS varchar(4)) NOT LIKE '%' + CAST(Rate AS varchar(2)) + '%'
)
(перенесли таблицу Rating и связанные с ней предикаты в EXISTS).