@Befroman

Как из одной таблицы MySQL выбрать так, что бы результ был по одной записи, но некоторые записи суммой нескольких рекордов в это же таблице?

Есть таблица, допустим, units, в ней колумны group, user, amount, type.
Group это означает являются ли юниты в группе. Группа может связать несколько рекордов в таблице, имея одинаковый групповой идентификатор. Если значение group для рекорда - 0, значит этот рекорд не состоит на данный момент ни в какой группе. Еще он может принимать значение идентификатора, то есть этот колумн двухзначный (в смысловом смысле).
User относит запись к определенному юзеру по его идентификатору. Amount это количество юнитов у записи. Type это тип юнита.
Что я хотел бы сделать это выбрать из таблицы данные в таком формате, что групповые записи, ака записи где group != 0 выбирались как одна запись, т.е. точно так же, как если бы эта была запись с group = 0. То есть я хотел бы показать групповые и внегрупповые записи все как одинаковые, но при этом для групповых записей она будет суммой, допустим amount, всем рекордов одинакововой группы.
Наглядный пример:
Есть 100 рекордов в таблице. У каждой рандомный юзер, и у всех один амаунт 4.
У 25 рекордов нету группы (group = 0), а 75 разделены на три группы 1, 2 и 3.
Нужно показать их на страничке сайта так:
1 - сумма 100 , 2 - сумма 100, 3 - сумма 100, потом идут остальные записи, но так как они без группы, они и в таблице являются одной записью, 4 - сумма 4, 5 - сумма 4 , ... 28 - сумма 4. То есть, тот кто смотрит список видит все записи как отдельные, а некоторые из них будут суммой нескольких записей одной группы в таблице.
  • Вопрос задан
  • 209 просмотров
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
(SELECT `id`, `amount` 
    FROM `table` 
    WHERE `group` = 0)
UNION 
(SELECT MIN(`id`), SUM(`amount`) 
    FROM `table` 
    WHERE `group` != 0 
    GROUP BY `group`)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы