2

レンタルされていないアイテム (書籍) のみを返すには、単一の mySQL ステートメントを記述する必要があります。私はこれを持っている瞬間ですが、それが正しくないことを知っています:

SELECT books.copies 
FROM books 
WHERE books.copies > (SELECT rentals.book_id, COUNT(rentals.book_id) As CountRentals 
                        FROM rentals 
                        WHERE rentals.book_id = books.id )
4

2 に答える 2

0

このクエリは、最初に book_id とレンタルされた部数を取得し、次に books テーブルと結合して部数がレンタルされた部数よりも多いかどうかを確認し、そのようなすべての本と利用可能な部数を出力します。

SELECT 
    b.id, b.copies - r.rentalCount
FROM 
    books b
    JOIN (
           SELECT book_id, count(*) rentalCount) 
           FROM rentals 
           GROUP BY book_id
         ) as r
    ON b.book_id = r.book_id
WHERE 
    b.copies > r.rentalCount
于 2012-10-13T12:03:31.750 に答える
0

a を使用して、テーブルleft joinにエントリがないものをすべて取得しますrentals

SELECT b.copies 
FROM books b
LEFT OUTER JOIN rentals r ON r.book_id = b.id
WHERE r.book_id IS NULL
于 2012-10-13T12:02:01.107 に答える