Как отобразить данные из таблицы sql, чтобы сделать один из столбцов значением заголовка столбца (дата)

#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