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

質問編集履歴

1

誤字の修正、追記

2016/09/12 04:51

投稿

komaru13
komaru13

スコア13

title CHANGED
File without changes
body CHANGED
@@ -1,7 +1,7 @@
1
1
  いつもお世話になっております。cakephp3でのクエリーの組み立て方が全く考えつきません。
2
2
  なにかアドバイスを頂けたらと思い質問させていただきました。
3
3
 
4
- ```sql
4
+ ```CSV
5
5
  会員番号,来店日,媒体
6
6
  608,2006/3/27,TV
7
7
  219,2002/12/31,NET
@@ -17,12 +17,28 @@
17
17
 
18
18
 
19
19
  ```
20
- 上記のようなSQLがあります。
20
+ 上記のようなCSVがあります。
21
21
  テレビや雑誌をみて来た新規の人が、1ヶ月以内に再来店したら、自動的にポイントをあげるようにしたいのですが、どのように実現すればよいでしょうか?
22
22
 
23
- *上記SQLデータで言えば、会員番号633の人が該当します。
23
+ *上記CSVデータで言えば、会員番号633の人が該当します。
24
24
  *ポイントは、集計時に見れればよいので、データベースに保存する必要はありません。
25
25
  *ポイントをあげるのは、1ヶ月に来店した時のみの1回だけです。
26
26
 
27
27
  何か考え方のヒントや、参考になるページなどのアドバイスでもなんでも良いので、ご教授頂けたらと思います。
28
- よろしくお願いします。
28
+ よろしくお願いします。
29
+
30
+ **追記**
31
+
32
+ 皆様のアドバイスを元に、考えてみたところ、部分単位での結果はなんとか出すことが出来ました。
33
+
34
+ ```sql
35
+ select member_num,visitdate,
36
+ (select count(*)+1
37
+ from post b
38
+ where b.member_num = a.member_num
39
+ and b.visitdate < a.visitdate) as Rn
40
+ from post a having Rn = 2
41
+ ```
42
+ 上記コードで2回目の来店日を出すことが出来ました。
43
+ 要は、初めての来店日と2回目を比較して、1ヶ月以内ならポイントを付与したいのですが、ここから詰まってしまいました。(文法的にも合っているかどうかわかりませんが・・・)
44
+ Mysqlで実現出来るのかどうかわかりませんが、アドバイス頂けたらと思います。