我必须为书店设计一个数据库,我已经构建了一个名为' Reviews'引用属于Costumer表和Book表的外键。我的问题是,我似乎无法创建一个连接命令,该命令将显示当前有评论的所有图书的名称的结果。
create database Bookorama
use Bookorama
--Book table
create table Book
(
bookID int identity(1,1),
bookName varchar(50) unique,
price smallmoney,
primary key (bookID)
);
--Customer table
create table Customer
(
custID int not null identity (1,1),
cName varchar(50),
cemid varchar(50),
primary key (custID)
);
-- Order table
create table Ordertable
(
orderID int identity(1,1),
custID int not null,
bookID int not null,
primary key (orderID),
foreign key (custid) references Customer(custid),
foreign key (bookID) references Book(bookid)
);
create table Reviews
(
reviewID int identity (1,1) not null,
custID int not null,
bookID int not null,
review varchar(50),
primary key (reviewID),
foreign key (custID) references Customer(custID),
foreign key (bookID) references Book(bookID)
)
当我尝试显示当前有评论的图书名称时:
select Book.bookName from Book
left outer join Book as BookswithReviews
on (Book.bookID = Reviews.bookID);
以下代码给出了以下错误:
多部分标识符" Reviews.bookID"无法受约束。
我刚刚开始使用SQL,请原谅我的不称职,但我似乎找到的每种解决方案都给了我相同的结果。
答案 0 :(得分:2)
您需要在From / Join子句中包含BookReview表:
select Book.bookName from Book
inner join Reviews
on (Book.bookID = Reviews.bookID);
不知道为什么你会像BookWithReviews'预订。
此外,使用外部联接将为您提供所有书籍,包括和不包括。使用内连接仅提供带有。
的连接