SQL Server尝试从外键表中检索名称失败

时间:2017-08-23 17:14:41

标签: sql sql-server left-join

我必须为书店设计一个数据库,我已经构建了一个名为' 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,请原谅我的不称职,但我似乎找到的每种解决方案都给了我相同的结果。

1 个答案:

答案 0 :(得分:2)

您需要在From / Join子句中包含BookReview表:

select Book.bookName from Book
    inner join Reviews 
        on (Book.bookID = Reviews.bookID);

不知道为什么你会像BookWithReviews'预订。

此外,使用外部联接将为您提供所有书籍,包括和不包括。使用内连接仅提供带有。

的连接