#mysql #select
#mysql #выберите
Вопрос:
Привет, у меня есть 2 таблицы в базе данных mysql:
mysql> describe lvlsupdate;
-------------- ------------- ------ ----- ------------------- -------------------
| Field | Type | Null | Key | Default | Extra |
-------------- ------------- ------ ----- ------------------- -------------------
| LvlsUpdateId | int | NO | PRI | NULL | auto_increment |
| UID | int | NO | MUL | NULL | |
| Nick | varchar(30) | NO | | NULL | |
| date | timestamp | NO | | CURRENT_TIMESTAMP | DEFAULT_GENERATED |
| Lvl | int | YES | | NULL | |
-------------- ------------- ------ ----- ------------------- -------------------
5 rows in set (0.02 sec)
mysql> describe players;
-------- ------------- ------ ----- --------- ----------------
| Field | Type | Null | Key | Default | Extra |
-------- ------------- ------ ----- --------- ----------------
| UID | int | NO | PRI | NULL | auto_increment |
| Nick | varchar(30) | NO | UNI | NULL | |
| Active | tinyint(1) | NO | | NULL | |
-------- ------------- ------ ----- --------- ----------------
3 rows in set (0.00 sec)
В одной из тем есть столбец date, который включает значение метки времени.
Я хотел бы создать запрос, который покажет мне данные о том, что в столбце будет ник и 7 дат (сегодня и за 6 дней до этого). И в каждой строке должно быть значение nick и lvl для каждой из этих дат в соответствующем столбце.
На данный момент я создал запрос следующим образом:
SELECT LvlsUpdate.nick, LvlsUpdate.lvl, LvlsUpdate.date
FROM LvlsUpdate
INNER JOIN Players ON LvlsUpdate.uid = Players.uid
WHERE Players.active = 1 AND LvlsUpdate.date > date_sub(now(), interval 7 day)
который показывает мне список ников, lvl и даты, но есть дубликаты ников, это выглядит так:
------------------ ------ ---------------------
| nick | lvl | date |
------------------ ------ ---------------------
| Player1 | 124 | 2020-10-11 00:01:02 |
| Player1 | 125 | 2020-10-12 00:01:03 |
| Player1 | 125 | 2020-10-13 00:01:02 |
| Player2 | 233 | 2020-10-11 00:01:02 |
| Player2 | 233 | 2020-10-12 00:01:03 |
| Player2 | 233 | 2020-10-13 00:01:02 |
| Player3 | 164 | 2020-10-11 00:01:02 |
| Player3 | 164 | 2020-10-12 00:01:03 |
| etc....
Существует ссылка между LvlsUpdate.UID и Players.UID. На игрока в день приходится только 1 запись.
Возможно ли это сделать в sql?
Комментарии:
1. Я не совсем уверен, что вы пытаетесь отобразить. Можете ли вы добавить еще одну таблицу под своим текущим выводом, чтобы показать ожидаемый результат?
2. @ThomasF Id хотел бы получить что-то вроде этого: imgur.com/a/kPt2ZVu