SELECT bookname, bookauthor FROM tb_bookinfo LEFT OUTER JOIN tb_booklend ON tb_bookinfo.bookcode = tb_booklend.bookcode LEFT OUTER JOIN tb_book ON tb_bookinfo.isbn = tb_book.isbn WHERE tb_booklend.bookcode IS NULL;用嵌套(NOT IN)完成
时间: 2024-03-23 13:43:40 浏览: 46
可以使用以下 SQL 查询语句使用嵌套(NOT IN)完成:
```
SELECT bookname, bookauthor
FROM tb_bookinfo
WHERE bookcode NOT IN (
SELECT bookcode
FROM tb_booklend
) AND isbn IN (
SELECT isbn
FROM tb_book
);
```
上述 SQL 查询语句通过两个子查询实现了左外连接和筛选。内部查询先从 `tb_booklend` 表中选择所有已经借出的书籍的 `bookcode`,然后外部查询从 `tb_bookinfo` 表中选择所有不在上述结果中的书籍,最后通过 `AND` 连接从 `tb_book` 表中选择所有存在的书籍的 `isbn`。最终返回所有符合条件的书籍的 `bookname` 和 `bookauthor`。
相关问题
SELECT bookname, bookauthor FROM tb_bookinfo LEFT OUTER JOIN tb_booklend ON tb_bookinfo.bookcode = tb_booklend.bookcode LEFT OUTER JOIN tb_book ON tb_bookinfo.isbn = tb_book.isbn WHERE tb_booklend.bookcode IS NULL;用嵌套法做
可以使用嵌套查询来实现这个SQL语句,具体实现如下:
```
SELECT bookname, bookauthor
FROM tb_bookinfo
LEFT OUTER JOIN tb_book ON tb_bookinfo.isbn = tb_book.isbn
WHERE tb_bookinfo.bookcode NOT IN (
SELECT bookcode
FROM tb_booklend
)
```
这个查询语句会先查询 `tb_booklend` 表中已经借出的书籍编码,然后在 `tb_bookinfo` 表中查询未被借出的书籍信息,并与 `tb_book` 表进行关联,最终返回书籍名称和作者。
为数据库Librarymanage创建一个存储过程proc_bookname,该存储过程根据使用者输入的书名(字段名为Book_name)在Bookinfo表中查询书籍的书名(字段名为Book_name)、作者(字段名为 Book_author)、出版社(字段名为Book_press)和价格(字段名为Book_price)。
好的,以下是存储过程`proc_bookname`的代码:
```
CREATE PROCEDURE proc_bookname
@Book_name VARCHAR(50)
AS
BEGIN
SELECT Book_name, Book_author, Book_press, Book_price
FROM Bookinfo
WHERE Book_name = @Book_name
END
```
存储过程接收一个参数`@Book_name`,表示用户输入的书名。然后在Bookinfo表中查询符合条件的书籍信息,包括书名、作者、出版社和价格,最后将查询结果返回。请注意,存储过程中的表名和字段名可能需要根据实际情况进行修改。
阅读全文