MySQL запрос на добавление столбцов из другой таблицы с левым соединением для нулевых значений - PullRequest
0 голосов
/ 18 октября 2019

У меня есть запрос, который имеет две суммы с разными столбцами из разных таблиц. Я могу получить сумму двух запросов SUM, но у меня проблема с отображением всех данных с нулевыми значениями из моего tbl_overtime_paid. Также я хочу добавить условие из моего запроса, чтобы добавить только тех, у кого tbl_salary_daily.status = 0 и tbl_overtime_paid.status = 0.

Моя структура таблицы выглядит примерно так: enter image description here

Я хочу вывод, подобный следующему:

firstname   middlename  lastname    name_ext    sum_amount_paid sum_salary  sum_total
Invader     Jesus       Jesus       Jr.         0               358.75      358.75
Jane        Jesus       Jesus       Jr.         0               380.62      380.62
John        Jesus       Jesus       Jr.         0               350         350
Liza        Jesus       Jesus       Jr.         0               385         385
Rey         Jesus       Jesus       Jr.         98.44           801.35      899.79

Вот структура скрипта sql для структуры: http://www.sqlfiddle.com/#!9/9615b5/1/0

1 Ответ

1 голос
/ 18 октября 2019

Вот ваш запрос. переместите AND tbl_overtime_paid.status = 0 в left join. добавление этого в where предложение будет фильтровать все на основе этого критерия

SELECT DISTINCT tbl_user.firstname,
  tbl_user.middlename,
  tbl_user.lastname,
  tbl_user.name_ext,
  sum(coalesce(tbl_overtime_paid.amount_paid,0)),
  sum(coalesce(t1.salary,0)),
  sum(coalesce(t1.salary,0)+coalesce(tbl_overtime_paid.amount_paid,0))
FROM tbl_user
INNER JOIN
  (SELECT sum(salary) as salary, employee_id from tbl_salary_daily
     WHERE `status` = 0 
     group by employee_id) as t1 on tbl_user.employee_id = t1.employee_id
LEFT JOIN tbl_overtime_paid ON tbl_overtime_paid.employee_id = t1.employee_id AND tbl_overtime_paid.`status` = 0
GROUP BY tbl_user.firstname,
  tbl_user.middlename,
  tbl_user.lastname,
  tbl_user.name_ext
...