UNIONing было бы довольно просто, но не уверен, что это даст вам полезные значения
SELECT a.id, a.branch_code, SUM(c.amount) AS AmountSum, d.category, e.branch_commission
FROM control_panel_client_create AS a
RIGHT JOIN sales_add_h AS b ON a.id = b.branch_code_id
RIGHT JOIN sales_add_i AS c ON b.id = c.sales_h_id
RIGHT JOIN control_panel_item_create AS d ON c.item_code_id = d.id
INNER JOIN control_panel_client_create AS e ON b.branch_code_id = e.id
WHERE c.transac_type = 0
GROUP BY d.category, b.branch_code_id
UNION
SELECT a.id, a.branch_code, SUM(c.amount) AS AmountSum, d.category, e.branch_commission
FROM control_panel_client_create AS a
RIGHT JOIN sales_add_h AS b ON a.id = b.branch_code_id
RIGHT JOIN sales_add_i AS c ON b.id = c.sales_h_id
RIGHT JOIN control_panel_item_create AS d ON c.item_code_id = d.id
INNER JOIN control_panel_client_create AS e ON b.branch_code_id = e.id
WHERE c.transac_type = 1
GROUP BY d.category, b.branch_code_id
ORDER BY AmountSum DESC
Вы можете просто получить сумму для обоих типов сделкам
SELECT a.id, a.branch_code, SUM(c.amount) AS AmountSum, d.category, e.branch_commission
FROM control_panel_client_create AS a
RIGHT JOIN sales_add_h AS b ON a.id = b.branch_code_id
RIGHT JOIN sales_add_i AS c ON b.id = c.sales_h_id
RIGHT JOIN control_panel_item_create AS d ON c.item_code_id = d.id
INNER JOIN control_panel_client_create AS e ON b.branch_code_id = e.id
WHERE c.transac_type IN (0, 1)
GROUP BY d.category, b.branch_code_id
ORDER BY AmountSum DESC
Или сумм для обоих отдельно
SELECT a.id, a.branch_code, SUM(c.amount) AS AmountSum, d.category, e.branch_commission , c.transac_type
FROM control_panel_client_create AS a
RIGHT JOIN sales_add_h AS b ON a.id = b.branch_code_id
RIGHT JOIN sales_add_i AS c ON b.id = c.sales_h_id
RIGHT JOIN control_panel_item_create AS d ON c.item_code_id = d.id
INNER JOIN control_panel_client_create AS e ON b.branch_code_id = e.id
WHERE c.transac_type IN (0, 1)
GROUP BY d.category, b.branch_code_id, c.transac_type
ORDER BY AmountSum DESC
Насти способ положить оба счетчика на одной и той же линии: -
SELECT a.id, a.branch_code, SUM(IF(c.transac_type=0,c.amount, 0)) AS AmountSumTransac_0, SUM(IF(c.transac_type=1, c.amount, 0)) AS AmountSumTransac_1, d.category, e.branch_commission
FROM control_panel_client_create AS a
RIGHT JOIN sales_add_h AS b ON a.id = b.branch_code_id
RIGHT JOIN sales_add_i AS c ON b.id = c.sales_h_id
RIGHT JOIN control_panel_item_create AS d ON c.item_code_id = d.id
INNER JOIN control_panel_client_create AS e ON b.branch_code_id = e.id
WHERE c.transac_type IN (0, 1)
GROUP BY d.category, b.branch_code_id
ORDER BY AmountSum DESC
Почему не 'WHERE c.transac_type IN (0, 1) 'вместо' UNION' ?? –
mysqli - неправильный тег здесь –
Просто FYI, термины «[mysql] и« right join »теперь отображаются в SO 952 раза. Сравните это с «[mysql] и« left join », которые появляются 22935 раз ... Я просто говорю. – Strawberry