teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

推敲

2020/08/30 01:41

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -1,4 +1,5 @@
1
1
  > 実際には更新されません
2
+
2
3
  条件が全体での貸出日の最新になっているから、指定した本は違う貸出日だからだと思います。
3
4
 
4
5
  相関問合せで対象の本の最新の貸出日を取得するようにする。

2

追記

2020/08/30 01:41

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -1,7 +1,10 @@
1
+ > 実際には更新されません
2
+ 条件が全体での貸出日の最新になっているから、指定した本は違う貸出日だからだと思います。
3
+
1
- 相関問合せで対象のデータの貸出日を取得するようにする。
4
+ 相関問合せで対象の最新の貸出日を取得するようにする。
2
5
  ※相関はbook_nameにしていますが、キーが設定されているならそちらに読み替えて下さい
3
6
  ```SQL
4
- SELECT * from borrow
7
+ UPDATE borrow SET return_date=current_timestamp()
5
8
  WHERE book_name = ?
6
- AND date = (SELECT MAX(date) FROM borrow t where book_name=borrow.book_name)
9
+ AND date = (SELECT MAX(date) FROM borrow t where book_name=borrow.book_name)
7
10
  ```

1

訂正

2020/08/30 01:41

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -1,4 +1,7 @@
1
+ 相関問合せで対象のデータの貸出日を取得するようにする。
2
+ ※相関はbook_nameにしていますが、キーが設定されているならそちらに読み替えて下さい
3
+ ```SQL
4
+ SELECT * from borrow
5
+ WHERE book_name = ?
1
- > 図書館の貸し出しのシステムを作る際、貸し出しテーブルの貸し出し日(date)が最新の日付で本の名前(book_name)と一致する返却日(return_date)を更新したい
6
+ AND date = (SELECT MAX(date) FROM borrow t where book_name=borrow.book_name)
2
-
3
- 最新の日付を検索するという事なら、そのテーブルは貸出履歴ですよね。
7
+ ```
4
- 前回の貸出日を現在日付で上書きするのはまずいので、更新じゃなくて追加するべきです。