@Triglav77

Как сформировать запрос из 2 таблиц с группировкой и SUM?

Есть таблица в которой перечисленны количества позиций для каждой услуги

table=service 
CREATE TABLE `service` (
  `id` int(5) NOT NULL,
  `card` int(11) DEFAULT NULL,    - услуга
  `amount` int(11) DEFAULT NULL,  - количесвто позиций
  `datatime` int(13) NOT NULL,
);


строки в таблице
card - 1, amount - 10, datatime - '12.07.2019'
card - 2, amount - 10, datatime - '12.07.2019'
card - 3, amount - 10, datatime - '12.07.2019'
card - 1, amount - 10, datatime - '12.07.2019'
card - 2, amount - 10, datatime - '12.07.2019'
card - 3, amount - 10, datatime - '12.07.2019'
card - 1, amount - 10, datatime - '13.07.2019'
card - 2, amount - 10, datatime - '13.07.2019'
card - 3, amount - 10, datatime - '13.07.2019'


Подскажите пожалуйста как правильно сформировать mysql запрос из 2 таблиц? чтобы результат выглядел таким образом

datatime      cards 1   cards 2   cards 3 
12.07.2019       20       20         20
13.07.2019       10       10         10
  • Вопрос задан
  • 69 просмотров
Пригласить эксперта
Ответы на вопрос 2
LaRN
@LaRN
Senior Developer
Можно так попробовать:
select datatime,
       sum(case when card = 1 then amount else 0 end) as 'Cards1',
       sum(case when card = 2 then amount else 0 end) as 'Cards2',
       sum(case when card = 3 then amount else 0 end) as 'Cards3'
  from service
 group by datatime


Но тут количество колонок задается в запросе жестко, в вашем примере их 3.
Если оно плавающее в зависимости от записей в БД, то тут нужно динамически запрос формировать.
Ответ написан
@shevchenko__k
вам помогут Join ы. я просто не совсем пойму что вам надо.
www.mysql.ru/docs/man/LEFT_JOIN_optimisation.html
связываете ваш service.card с cards.id и в select SYM(ТУ КОЛОНКУ ЧТО ВАМ НАДО. )
Ответ написан
Ваш ответ на вопрос

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

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