#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 ресурсов на игрока в день, то да.