我有以下三个表格:
每月:
| u_id | memb_type | run_day |
------------------------------------
| 1 | 1 | 410 |
| 2 | 1 | 410 |
| 1 | 2 | 510 |
| 2 | 1 | 510 |
| 1 | 2 | 610 |
| 2 | 1 | 610 |
memb_types:
| id | name |
----------------------------
| 1 | member |
| 2 | active_member |
用户:
| id | join_date |
----------------------------
| 1 | 2015-03-01 |
| 2 | 2015-04-04 |
我尝试编写的查询将显示用户在加入的前两个月memb_type
。棘手的部分是monthly.run_day
不是一个有效的日期时间,它基本上需要创建多个虚拟列,我现在有一些东西,我现在卡住了:
SELECT
user.id,
user.join_date,
MONTH(user.join_date + INTERVAL 1 MONTH) AS `first_month`,
"???" AS `first_month_memb_type`,
MONTH(user.join_date + INTERVAL 2 MONTH) AS `second_month`,
"???" AS `second_month_memb_type`
FROM
user
INNER JOIN
monthly
ON
user.id = monthly.u_id
INNER JOIN
memb_types
ON
monthly.memb_type = memb_types.id
我不确定如何使用MONTH(user.join_date + INTERVAL 1 MONTH)
生成的数据并将其加入monthly
run_day
上加入的SUBSTRING(monthly.run_day, 1, 1)
表中我们需要将月份中的值与run_day
进行匹配但是我不知道如何将monthly
表格重新加入first_month_memb_type
两次second_month_memb_type
和{ {1}}。
根据需要,所需的输出如下(简称为简称):
| id | join_date | fm | fm_type | sm | sm_type |
-------------------------------------------------------
| 1 | 2015-03-01 | 4 | member | 5 | active_member |
| 2 | 2015-04-04 | 5 | member | 6 | member |
任何想法如何实现这一目标?