Требование состоит в том, чтобы найти все книги, которые имеют тот же предметный код, что и книга с названием "Искусство Уолта Диснея", используя табличное соединение вместо подзапроса, как показано ниже, которое я написал. Проблема, с которой я сталкиваюсь, заключается в том, что я не совсем уверен в том, как фильтровать результаты на основе требуемых критериев, не используя подзапрос, чтобы сделать это. Вот что я до сих пор
SELECT ISBN, Title, Subject_Code
FROM Book
where Subject_Code = Book.subject_Code
ORDER BY Title;
Это мое выражение о создании, чтобы выяснить, с какими таблицами я работаю. Спасибо!
CREATE TABLE IF NOT EXISTS subject
(SubjectCode nvarchar(3) PRIMARY KEY NOT NULL,
Subject nvarchar(15));
CREATE TABLE IF NOT EXISTS Book
(ISBN nvarchar(13) PRIMARY KEY NOT NULL, Title nvarchar(50), Author nvarchar(30),
Publisher nvarchar(30),
Subject_Code nvarchar(3),
Shelf_Location nvarchar(7), Fiction bit(1),
FOREIGN KEY (Subject_Code) REFERENCES subject(SubjectCode));
В SQL вы можете присоединиться к таблице с самим собой. Рассмотрим следующее:
SELECT b2.ISBN, b2.Title, b2.Subject_Code
FROM Book b1
LEFT JOIN Book b2 ON b1.Subject_Code = b2.Subject_Code
WHERE b1.Title = "The Art of Walt Disney"
Вы можете сделать это, используя самоподключение:
select b.*
from book b join
book bwd
on b.subject_code = bwd.subject_code
where bdw.title = 'The Art of Walt Disney'
order by title;
Условие может идти либо в условии on
либо в условии where
.