为此,我如何在 SQL 中实现视图?我想获取第 2 本书所在的书架中存在的书籍数量。'2' 是书的 ID,这本书也有一个书架 ID 归属于它。我如何找到它的书架编号,然后搜索其中有多少本书?
SELECT COUNT(b.book_id)
FROM book b, shelf s
我已经尝试了一些事情,但真的不知道如何前进。
为此,我如何在 SQL 中实现视图?我想获取第 2 本书所在的书架中存在的书籍数量。'2' 是书的 ID,这本书也有一个书架 ID 归属于它。我如何找到它的书架编号,然后搜索其中有多少本书?
SELECT COUNT(b.book_id)
FROM book b, shelf s
我已经尝试了一些事情,但真的不知道如何前进。
如果BOOK
表已经有shelf_id
属性,那么下面的查询会返回你在同一个书架上的书的数量book 2
:
SELECT COUNT(*) FROM books
WHERE shelf_id = (SELECT shelf_id FROM books WHERE book_id = 2)
这个计数book 2
也包括,顺便说一句。SQL Server 的过程定义如下:
CREATE PROCEDURE sp_get_count_of_books_in_shelf_by_book_id
(
@book_id INT
)
AS
SELECT COUNT(*) FROM books
WHERE shelf_id = (SELECT shelf_id FROM books WHERE book_id = @book_id)
SELECT COUNT(b2.*)
FROM book b1 JOIN book b2
ON b1.shelf_id = b2.shelf_id
where b1.book_id = 2;
或者
SELECT COUNT(b2.*)
FROM book b2
where b2.shelf_id in (select shelf_id from book b1 where b1.book_id = 2);
这应该可以正常工作:
SELECT COUNT(b.book_id)
FROM book b
INNER JOIN (SELECT s.shelf_id FROM book b1, shelf s WHERE b1.shelf_id = s.shelf_id AND b1.book_id = 2) j ON b.shelf_id = j.shelf_id