Авторы
Метки
авиация авто администарция администрация анекдот армия афиша банк безопасность бизнес благотворительность блог будущее видео власть вода время выборы выборы 2012 выставка гаи голосование город гороскоп гост госуслуги грамотность день рождения деньги дети дизайн дороги еда жкх забавно загадка закон здоровье интернет инфолайф информация искусство история календарь кино компьютер коррупция космос красота критика культура курение ЛМЗ лошадь люди магазин маркетинг математика мебель мода море мост музыка мультфильм мусор мызыка мысли навальный налоги настроение новости новость образование одежда отдых офис память пенсия питание погода поздравление политика полиция почта праздник президент природа программы прокуратура путешествие путин работ работа реклама рекорд религия ремонт рисование русский язык сми спички спорт стихи такси танец танцы театр телевидение телефон туалет туризм умный дом филосовия фото хозяйке на заметку цветы цирк цитаты Чусовой экономика этикет

Один SQL-запрос

SELECT c.id_user as id, c.phone, c.surname, c.name, c.patronymic, IFNULL(c.sum11,0)+IFNULL(d.sum22,0) as sum, c.current_cashback
FROM
(
SELECT a.id_user, a.phone, a.surname, a.name, a.patronymic, IFNULL(a.sum1,0)+IFNULL(b.sum2,0) as sum11, a.current_cashback FROM
(
SELECT a1.id_user, a2.phone, a2.surname, a2.name, a2.patronymic, sum(a1.cashback) as sum1, a2.cashback as current_cashback FROM company_cashback a1, company_user a2 WHERE a1.id_user=a2.id AND a1.data>=1627758000 AND a1.data<1630436400 AND a1.cashback>0 AND (a1.id_category=1 OR a1.id_category=2) GROUP BY a1.id_user
) a
LEFT JOIN
(
SELECT id_user, sum(cashback) as sum2 FROM company_cashback WHERE data>=1633028400 AND data<1635706800 AND cashback>0 AND (id_category=3 OR id_category=4 OR id_category=5 OR id_category=7) GROUP BY id_user
) b
ON a.id_user=b.id_user
UNION
SELECT a.id_user, a.phone, a.surname, a.name, a.patronymic, IFNULL(a.sum1,0)+IFNULL(b.sum2,0) as sum11, a.current_cashback FROM
(
SELECT a1.id_user, a2.phone, a2.surname, a2.name, a2.patronymic, sum(a1.cashback) as sum1, a2.cashback as current_cashback FROM barbarra_cashback a1, company_user a2 WHERE a1.id_user=a2.id AND a1.data>=1627758000 AND a1.data<1630436400 AND a1.cashback>0 AND (a1.id_category=1 OR a1.id_category=2) GROUP BY a1.id_user
) a
RIGHT JOIN
(
SELECT id_user, sum(cashback) as sum2 FROM company_cashback WHERE data>=1633028400 AND data<1635706800 AND cashback>0 AND (id_category=3 OR id_category=4 OR id_category=5 OR id_category=7) GROUP BY id_user
) b
ON a.id_user=b.id_user
) c
LEFT JOIN (SELECT id_user, sum(cashback) as sum22 FROM company_cashback WHERE data>=1630436400 AND data<1635706800 AND cashback<0 GROUP BY id_user) d
ON c.id_user=d.id_user

Да, и это всё один sql-запрос в МySQL! :))

dm
03.12.2021 11:37

Метка: программы

Оценка:
1.Да ну, запрос обычный. Бывают и посложнее )

Олсо, AND (id_category=3 OR id_category=4 OR id_category=5 OR id_category=7) лучше записать как and id_category in (3, 4, 5, 7) — короче и понятней.
Wizard
04.12.2021 17:15
2.Ну не знаю, у меня такое впервые... :)

ok
dm
04.12.2021 17:31
3.Айтишники задроты о своём бухтят на птичьем языке
Махачкала
04.12.2021 19:35

Добавить комментарий могут только участники блога.
Чтобы стать участником блога необходимо зарегистрироваться.

Реклама