Запрос MYSQL для получения суммы на основе другой таблицы

#mysql #subquery

#mysql #подзапрос

Вопрос:

У меня есть следующие две таблицы:

 CREATE TABLE `goods_ages` (
  `resourceKey` varchar(50) NOT NULL,
  `eraId` int(10) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

| resourceKey| eraId       | 
|:-----------|------------:|
| gold       |      1      | 
| iron       |      1      |  
| wood       |      2      |  
| steel      |      2      |  


CREATE TABLE `user_resources` (
  `id` int(10) NOT NULL,
  `date` date NOT NULL,
  `gold` int(10) DEFAULT NULL,
  `iron` int(10) DEFAULT NULL,
  `wood` int(10) DEFAULT NULL
  `steel` int(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


| id | date       | gold | iron | wood | steel|
|:---|------------|------|------|------|------|
| 1  |  2020-09-02|  90  |  5   |  55  |  10  |
| 2  |  2020-09-03|  50  |  10  |  55  |  10  |
| 3  |  2020-09-04|  30  |  20  |  55  |  30  |
| 4  |  2020-09-05|  50  |  20  |  55  |  20  |
  

И хотите отобразить СУММУ ресурсов на eraId в определенные даты (на диаграмме области):

 | eraId   |    date      |  SUM   | 
|:--------|--------------|-------:|
| 1       |   2020-09-02 |   95   | 
| 2       |   2020-09-02 |   65   |
| 1       |   2020-09-03 |   60   | 
| 2       |   2020-09-03 |   65   |
| 1       |   2020-09-04 |   50   | 
| 2       |   2020-09-04 |   85   |
| 1       |   2020-09-05 |   70   | 
| 2       |   2020-09-05 |   75   | 
  

Моя проблема в том, что я не могу понять, как построить свой запрос MYSQL. Мне нужно что-то вроде

 SELECT user_resources.SUM, goods_ages.eraId, user_resources.date FROM user_resources INNER JOIN goods_ages GROUP BY goods_ages.eraID
  

Но также нужен подзапрос, чтобы получить some для каждого eraId…

PS: У меня более 150 столбцов в user_resources, и в будущем может быть добавлено больше автоматически.

Комментарии:

1. Каждый раз, когда вы сталкиваетесь с перечисляемыми именами столбцов, должны зазвенеть тревожные звоночки. Рассмотрите возможность пересмотра дизайна вашей схемы.

2. Ну, на самом деле они не перечислены. Я просто хотел упростить. Я обновлю вопрос

3. Тем не менее, это все одно и то же. Пересмотренный дизайн улучшит ситуацию.

4. У меня есть идентификатор (который я опустил в своем примере) в таблице goods_ages. Вы рекомендуете иметь одну запись в user_resources, ссылающуюся на идентификатор в goods_ages, на каждый день, для каждого игрока? Это будет означать более 150 записей в день для каждого игрока…

5. Если вам нужно отслеживать 150 ресурсов на игрока в день, то да.