я есть 3 таблицыMYSQL влево присоединиться и внутреннее соединение
Сотрудник => e_id (ПК), dep_id (Fk)
отдел => d_id (PK)
Перенаправление => Id (PK), date_of_absence (DATE), e_id_f (FK)
Я хочу получить количество отсутствующих сотрудников в определенном отделе на определенный период.
я создал таблицу под названием MyDates
CREATE TABLE MyDates (mydate date);
и эту процедуру, чтобы заполнить MyDates таблицу с датами
CREATE PROCEDURE filldates(dateStart DATE, dateEnd DATE)
НАЧАТЬ
WHILE dateStart <= dateEnd DO
INSERT INTO MyDates (mydate) VALUES (dateStart);
SET dateStart = date_add(dateStart, INTERVAL 1 DAY);
END WHILE;
END;
затем я назвал процедуру, чтобы заполнить MyDates с датой CALL filldates ('2017-01-01', '2017-03-31');
Тогда я сделал это отборное заявление:
select mydates.mydate, count(attendance.date_of_absence)
from mydates left join attendance on
mydates.mydate = attendance.date_of_absence
where mydates.mydate Between "2017-01-01" AND "2017-01-31"
group by mydates.mydate
Этот запрос получает то, что мне нужно, но и для всех ведомств, но и для определенного отдела количество строк неверен
select mydates.mydate, count(attendance.date_of_absence)
from mydates
left join attendance on mydates.mydate = attendance.date_of_absence
inner join employee on attendance.e_id_f = employee.e_id
where mydates.mydate Between "2017-01-01" AND "2017-01-31" AND employee.dep_id = 4
group by mydates.mydate;
Это снимок экрана IMG
можете ли вы добавить какие данные вам нужны и какой набор результатов вы получаете в форме образца. – meet
уверен, пожалуйста, посмотрите на скриншот, добавленный выше. –