1

このために SQL でビューを実現するにはどうすればよいですか? 書籍 2 が置かれている棚に存在する書籍の数を取得したいと考えています。'2' は書籍 ID で、書籍には、shelf_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 に答える