質問編集履歴

8

見やすく修正

2019/08/27 11:51

投稿

tosba
tosba

スコア10

test CHANGED
File without changes
test CHANGED
@@ -50,13 +50,11 @@
50
50
 
51
51
  SELECT P.name,A.price,max(A.reserch_date),B.price,max(B.reserch_date),A.price-B.price
52
52
 
53
- from products as P INNER JOIN ashops as A
53
+ from products as P
54
54
 
55
- on P.id = A.product_id
55
+ INNER JOIN ashops as A on P.id = A.product_id
56
56
 
57
- JOIN bshops as B
58
-
59
- on P.id = B.product_id
57
+ JOIN bshops as B on P.id = B.product_id
60
58
 
61
59
  GROUP BY P.id;
62
60
 

7

修正

2019/08/27 11:51

投稿

tosba
tosba

スコア10

test CHANGED
File without changes
test CHANGED
@@ -75,3 +75,7 @@
75
75
  ↓bshopのデータ
76
76
 
77
77
  ![イメージ説明](0ab942b1efbcd1b817c56f20dcbe61a5.png)
78
+
79
+
80
+
81
+ テーブル構造などが変わってもかまいません。良い方法があればご教授ください。

6

画像追加

2019/08/27 10:43

投稿

tosba
tosba

スコア10

test CHANGED
File without changes
test CHANGED
@@ -67,3 +67,11 @@
67
67
 
68
68
 
69
69
  ここまでは書いてみましたが、これだと最新のreserch_dateと同じ行のpriceが出力されません。
70
+
71
+ ↓SQL出力結果
72
+
73
+ ![イメージ説明](56074906703e25466864020f181c7f82.png)
74
+
75
+ ↓bshopのデータ
76
+
77
+ ![イメージ説明](0ab942b1efbcd1b817c56f20dcbe61a5.png)

5

誤字

2019/08/27 10:40

投稿

tosba
tosba

スコア10

test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
 
8
8
 
9
- 【ashopsテーブル】--A店で調査した商品価格と日時と入力
9
+ 【ashopsテーブル】--A店で調査した商品価格と日時
10
10
 
11
11
  id
12
12
 
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
 
21
- 【bshopsテーブル】--B店で調査した商品価格と日時と入力
21
+ 【bshopsテーブル】--B店で調査した商品価格と日時
22
22
 
23
23
  id
24
24
 
@@ -26,7 +26,7 @@
26
26
 
27
27
  price 
28
28
 
29
- researchdate
29
+ research_date
30
30
 
31
31
 
32
32
 

4

変更点

2019/08/27 10:21

投稿

tosba
tosba

スコア10

test CHANGED
File without changes
test CHANGED
@@ -1,32 +1,32 @@
1
- 商品名テーブル】
1
+ productsテーブル】
2
2
 
3
- products.id
3
+ id
4
4
 
5
- products.name
5
+ name
6
6
 
7
7
 
8
8
 
9
- A店リサーチテーブル】--A店で調査した商品価格入力
9
+ ashopsテーブル】--A店で調査した商品価格と日時と入力
10
10
 
11
- ashops.id
11
+ id
12
12
 
13
- ashops.product_id
13
+ product_id
14
14
 
15
- ashops.price A店の価格
15
+ price
16
16
 
17
- ashops.researchdate 価格調査日
17
+ research_date
18
18
 
19
19
 
20
20
 
21
- B店リサーチテーブル】--A店で調査した商品価格入力
21
+ bshopsテーブル】--B店で調査した商品価格と日時と入力
22
22
 
23
- bshops.id
23
+ id
24
24
 
25
- ashops.product_id 
25
+ product_id 
26
26
 
27
- ashops.price B店の価格
27
+ price 
28
28
 
29
- ashops.researchdate 価格調査日
29
+ researchdate
30
30
 
31
31
 
32
32
 
@@ -38,9 +38,9 @@
38
38
 
39
39
  同じproducts_idで
40
40
 
41
- ashops.researchdateが最新のashops.price(A店の最新価格)と
41
+ ashops.research_dateが最新のashops.price(A店の最新価格)と
42
42
 
43
- bshops.researchdateが最新のbshops.price(B店の最新価格)の差を
43
+ bshops.research_dateが最新のbshops.price(B店の最新価格)の差を
44
44
 
45
45
  降順で並べ替えたいのですがSQL文の書き方がわかりません。
46
46
 

3

MySQLに限った質問に変更

2019/08/27 10:20

投稿

tosba
tosba

スコア10

test CHANGED
@@ -1 +1 @@
1
- CakePHP3 3つのテーブルを結合 差を降順で並べ替えたい
1
+ MySQL 3つのテーブルを結合 差を降順で並べ替えたい
test CHANGED
@@ -42,14 +42,28 @@
42
42
 
43
43
  bshops.researchdateが最新のbshops.price(B店の最新価格)の差を
44
44
 
45
- 降順で並べ替えたいのですが
45
+ 降順で並べ替えたいのですがSQL文の書き方がわかりません。
46
-
47
- CakePHP3でどのように実装したらいいでしょうか?
48
46
 
49
47
 
50
48
 
49
+ ```MySQL
50
+
51
+ SELECT P.name,A.price,max(A.reserch_date),B.price,max(B.reserch_date),A.price-B.price
52
+
53
+ from products as P INNER JOIN ashops as A
54
+
55
+ on P.id = A.product_id
56
+
57
+ JOIN bshops as B
58
+
59
+ on P.id = B.product_id
60
+
61
+ GROUP BY P.id;
51
62
 
52
63
 
53
- ※同じ商品のA店、B店の最新の価格差が取れれば良いので
54
64
 
65
+ ```
66
+
67
+
68
+
55
- テーブル構造やクエリ変わっも良いです
69
+ ここまで書いみましたが、これだと最新のreserch_dateと同じ行のpriceが出力されません

2

テーブル設計

2019/08/27 10:13

投稿

tosba
tosba

スコア10

test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
 
8
8
 
9
- 【A店リサーチテーブル】
9
+ 【A店リサーチテーブル】--A店で調査した商品価格を入力
10
10
 
11
11
  ashops.id
12
12
 
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
 
21
- 【B店リサーチテーブル】
21
+ 【B店リサーチテーブル】--A店で調査した商品価格を入力
22
22
 
23
23
  bshops.id
24
24
 
@@ -32,7 +32,7 @@
32
32
 
33
33
  ![イメージ説明](aa270dfc8a7d771e9d0477db0ded7533.png)
34
34
 
35
- ![イメージ説明](1485fd01598f440d2cf0d197a1699a2e.png)
35
+ ![イメージ説明](530c1880652393f4d4b25be5e934a41b.png)
36
36
 
37
37
 
38
38
 

1

テーブル説明

2019/08/27 09:12

投稿

tosba
tosba

スコア10

test CHANGED
File without changes
test CHANGED
@@ -30,6 +30,12 @@
30
30
 
31
31
 
32
32
 
33
+ ![イメージ説明](aa270dfc8a7d771e9d0477db0ded7533.png)
34
+
35
+ ![イメージ説明](1485fd01598f440d2cf0d197a1699a2e.png)
36
+
37
+
38
+
33
39
  同じproducts_idで
34
40
 
35
41
  ashops.researchdateが最新のashops.price(A店の最新価格)と