回答編集履歴

3

推敲

2020/08/30 01:41

投稿

sazi
sazi

スコア25195

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

2

追記

2020/08/30 01:41

投稿

sazi
sazi

スコア25195

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

1

訂正

2020/08/30 01:41

投稿

sazi
sazi

スコア25195

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