Ես փորձում եմ ստանալ խմբեր և նրանց բոլոր օգտվողներին, որտեղ խմբի առնվազն մեկ օգտատեր այցելել է առնվազն 14 օրվա ընթացքում, ապա պատվիրել ըստ group_id, user_id: Եթե խումբն ունի միայն 14 օրից մեծ օգտվողներ, այն պետք է ամբողջությամբ անտեսվի:
Ես նաև կցանկանայի հաշվել, թե յուրաքանչյուր խումբ քանի օգտատեր ունի:
Հիմնականում առնվազն մեկ օգտվող ակտիվ է պահում ամբողջ խումբը՝ այցելելով 14 օրվա ընթացքում: Եթե խմբում ոչ ոք չի այցելել այդ ընթացքում, նրանք չեն ցուցադրվում խմբի էջում:
Group Table = groups
+----------+--------------+
| group_id | group_name |
+----------+--------------+
| 1 | first_group |
| 2 | second_group |
| 3 | third_group |
+----------+--------------+
User Table = users
+---------+-----------+----------+---------------------+
| user_id | user_name | group_id | last_visit |
+---------+-----------+----------+---------------------+
| 1 | user1 | 1 | 2017-01-01 12:00:00 |
| 2 | user2 | 3 | 2017-01-01 12:00:00 |
| 3 | user3 | 2 | 2017-01-11 12:00:00 |
| 4 | user4 | 1 | 2017-01-12 12:00:00 |
| 5 | user5 | 3 | 2017-01-12 12:00:00 |
| 6 | user6 | 3 | 2017-01-14 12:00:00 |
+---------+-----------+----------+---------------------+
Desired Output if today's date is 2017-01-16 12:00:00
+----------+-------------+---------+-----------+------------+---------------------+
| group_id | group_name | user_id | user_name | user_count | last_visit |
+----------+-------------+---------+-----------+------------+---------------------+
| 1 | first_group | 1 | user1 | 2 | 2017-01-01 12:00:00 |
| 1 | first_group | 4 | user4 | 2 | 2017-01-12 12:00:00 |
| 3 | third_group | 2 | user2 | 3 | 2017-01-01 12:00:00 |
| 3 | third_group | 5 | user5 | 3 | 2017-01-12 12:00:00 |
| 3 | third_group | 6 | user6 | 3 | 2017-01-14 12:00:00 |
+----------+-------------+---------+-----------+------------+---------------------+
Այն, ինչ հիմա ունեմ: Սա ստանում է օգտվողներին, ովքեր այցելել են վերջին 14 օրվա ընթացքում, բայց այն անտեսում է խմբի մնացած մասը:
SELECT
users.user_id, users.user_name,
groups.group_id, groups.group_name
FROM users, groups
WHERE users.last_visit > NOW() - INTERVAL 14 DAY
AND groups.group_id = users.group_id
ORDER BY groups.group_id, users.user_id