2017-08-02 79 views
-2

数据我有一个用户表像这样针对MySQL的每个月

id | username | name | join_date 
-----+-------------+--------+------------- 
1 | asdasd  | name1 | timestamp 
2 | asdas1  | name2 | timestamp 
3 | asdas2  | name3 | timestamp 
4 | asdas3  | name4 | timestamp 

每个用户都需要支付月租。如果用户支付或不支付需要报告。

所以我创造了另一个表添加一个月的数据(管理员每个月将手动添加)

id | month_number | year 
----+----------------+--------- 
1 | 02    | 2017 // Case Feb 2014 
3 | 03    | 2017 // Case Mar 2014 

如何将这两个表的连接?

回答

0

最简单的方法是将它们加入到查询中。
造成这种情况的最简单的方法是只把它放在where子句中.... SELECT payment.month_number, payment.year, users.username FROM users, payment WHERE (users.id = payment.id) AND (users.username = asdasd)

0

您将需要一个表来跟踪(是不是真正需要第二个表)的subscriptionssubscriptions可以有用户ID为外键,subscription_date和金额列,如:

id | user_id | subscription_date | amount 
----+-----------+-------------------+-------- 
1 |  2  | 2017-03-01  | 100 
1 |  1  | 2017-02-01  | 100 
+0

如何每个月都有拖欠者的名单? – ramesh

+1

使用“NOT EXISTS”?例如'SELECT u。* FROM users u WHERE NOT EXISTS(SELECT * FROM subscriptions WHERE user_id = u.id AND subscription_date ='2017-02-01');' –

0

如果可能的话,请添加列USER_ID到month_date表

,并尝试这种

SELECT * 
    FROM users u 
    LEFT JOIN month_date m 
    ON u.id = m.user_id