1

为此,我如何在 SQL 中实现视图?我想获取第 2 本书所在的书架中存在的书籍数量。'2' 是书的 ID,这本书也有一个书架 ID 归属于它。我如何找到它的书架编号,然后搜索其中有多少本书?

    SELECT COUNT(b.book_id)
    FROM book b, shelf s

我已经尝试了一些事情,但真的不知道如何前进。

4

3 回答 3

1

如果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)
于 2012-12-01T17:30:31.617 回答
1
    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);
于 2012-12-01T17:33:40.687 回答
0

这应该可以正常工作:

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
于 2012-12-01T17:36:50.860 回答