2016-11-21 6 views
0

テーブルLibraryに行エンティティ、たとえばBookがあります。私はの実体を表す行を持つテーブルBorrowingsも持っています。他のテーブルに存在しないIDを持つすべての行を返します

BookBorrowingの行で書籍book_idに借用している本をマークするために使用される主キーを持っています。 1つのBookに接続できる0-n Borrowingの行があります。

  • Borrowing特定の書籍の行がない場合、Bookが利用可能です。
  • return_dateが特定の書籍の1-n Borrowing行で、現在の日付よりも小さい場合は、Bookを使用できます。
  • return_dateの1つだけが行になることがあります。これが存在する場合、Bookは借用されており、読者には利用できません。

私の質問は - どのようにこれらの基準を満たすために借用可能なすべての書籍を見つけることができますか?

  • IDが参照されている行がないBorrowing行がありません。
  • Borrowing行がありません。将来はreturn_dateとなります。
+1

** [編集] **あなたの質問といくつかのサンプルデータとそのデータに基づいて予想される出力を追加します。 [**フォーマット**](http://stackoverflow.com/editing-help#code)**テキスト**お願い、[スクリーンショットなし](http://meta.stackoverflow.com/questions/285551/why -may-i-not-upload-code-on-so-ask-a-question/285557#285557) –

+0

「n」とは何ですか?特定のタイトルに複数のコピーがありますか?また、テーブル定義とサンプルデータを質問に追加してください。 – joop

答えて

0

クエリ

SELECT * 
FROM library l 
LEFT JOIN borrowing b 
ON l.book_id = b.book_id 
WHERE (b.book_id IS NULL 
    OR NOW()::date - b.return_date::date > 0) 

の下に、これはあなたを助ける必要があります希望をお試しください。

関連する問題