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

質問編集履歴

4

訂正、うまくできました

2020/05/22 02:09

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -65,17 +65,7 @@
65
65
  )
66
66
  ```
67
67
 
68
- ```SQLite
69
- /* 応答がなくなり、ハングアップ状態 */
70
- UPDATE contract
71
- SET count = (
72
- SELECT MAX(b.bill_count)+1
73
- FROM bill as b
74
- WHERE contract.id = b.contract_id
75
- )
76
68
 
77
- ```
78
-
79
69
  ```SQLite
80
70
  /* Error no such column: b.contract_id */
81
71
  UPDATE contract

3

試したことを追加

2020/05/22 02:09

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -66,6 +66,17 @@
66
66
  ```
67
67
 
68
68
  ```SQLite
69
+ /* 応答がなくなり、ハングアップ状態 */
70
+ UPDATE contract
71
+ SET count = (
72
+ SELECT MAX(b.bill_count)+1
73
+ FROM bill as b
74
+ WHERE contract.id = b.contract_id
75
+ )
76
+
77
+ ```
78
+
79
+ ```SQLite
69
80
  /* Error no such column: b.contract_id */
70
81
  UPDATE contract
71
82
  SET count =

2

試してみたクエリー

2020/05/22 01:57

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
 
14
14
  アップデートのため下記のようなSQLを書きました
15
- ```sql
15
+ ```SQLite
16
16
  UPDATE c
17
17
  SET count = MAX(b.bill_count)+1
18
18
  FROM contract AS c
@@ -25,7 +25,7 @@
25
25
 
26
26
 
27
27
  selectによる表示は目的通り出力されます
28
- ```SQL
28
+ ```SQLite
29
29
  SELECT c.*,MAX(b.bill_count)+1
30
30
  FROM contract as c
31
31
  LEFT JOIN bill as b
@@ -35,4 +35,45 @@
35
35
  ```
36
36
 
37
37
  FROM周辺に問題があるようなのですが、どのように修正すればよいか分からずにいます。
38
- よろしくおねがいします。
38
+ よろしくおねがいします。
39
+
40
+ ==追記(他に試した方法)==
41
+
42
+ ```SQLite
43
+ /* 同じデータで埋められてしまいます */
44
+ UPDATE contract
45
+ SET count = (
46
+ SELECT MAX(b.bill_count)+1
47
+ FROM contract as c
48
+ LEFT JOIN bill as b
49
+ ON c.id = b.contract_id
50
+ WHERE c.status <> '1'
51
+ GROUP BY b.contract_id
52
+ )
53
+ ```
54
+
55
+ ```SQLite
56
+ /* 応答がなくなり、ハングアップ状態 */
57
+ UPDATE contract
58
+ SET count = (
59
+ SELECT MAX(b.bill_count)+1
60
+ FROM contract as c
61
+ LEFT JOIN bill as b
62
+ ON c.id = b.contract_id
63
+ WHERE contract.id = b.contract_id
64
+ GROUP BY b.contract_id
65
+ )
66
+ ```
67
+
68
+ ```SQLite
69
+ /* Error no such column: b.contract_id */
70
+ UPDATE contract
71
+ SET count =
72
+ (
73
+ SELECT MAX(b.bill_count)+1
74
+ FROM bill as b
75
+ GROUP BY b.contract_id
76
+ )
77
+ WHERE id = b.contract_id
78
+ /* b.contract_id を bill.contract_id にするとエラーは bill.contract_id */
79
+ ```

1

誤字の修正

2020/05/22 00:54

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -14,7 +14,7 @@
14
14
  アップデートのため下記のようなSQLを書きました
15
15
  ```sql
16
16
  UPDATE c
17
- SET count = MAX(c.bill_count)+1
17
+ SET count = MAX(b.bill_count)+1
18
18
  FROM contract AS c
19
19
  LEFT JOIN bill AS b
20
20
  ON c.id = b.contract_id