Я видел несколько постов, похожих на этот вопрос. Я пытался адаптировать каждый из них к своим потребностям, но я потерпел неудачу. Надеюсь, кто-то может оказать некоторую помощь с этим утверждением mysql:
Родительская таблица: Клиент
`id` int(11) NOT NULL AUTO_INCREMENT,
Детский стол: Назначение
CREATE TABLE `appointment` (
`aptID` int(11) NOT NULL AUTO_INCREMENT,
`start_time` time DEFAULT NULL,
`date` date DEFAULT NULL,
`id` int(11) DEFAULT NULL,
`reason` enum('Assessment','Follow-up') DEFAULT NULL,
`outcome` enum('Show','No Show') DEFAULT NULL,
`last30` int(5) DEFAULT NULL,
PRIMARY KEY (`aptID`),
KEY `fk_appointment_client1_idx` (`id`),
CONSTRAINT `fk_appointment_client1` FOREIGN KEY (`id`) REFERENCES `client` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8;
Мне нужен отчет о следующем:
1) количество назначений за последние 30 дней
2) количество назначений за 365 дней
3) количество назначений когда-либо
4) количество пропущенных встреч за последние 30 дней
Я создал представление, которое дает мне все, кроме последнего (пропущенные встречи), но я не мог понять, как включить пропущенные встречи:
CREATE VIEW `total`
AS SELECT
id AS id,
name AS name,
count(`C1`) AS `Last30days`,
count(.`C2`) AS `Last365Days`,
count(`C3`) AS `Alltime`
FROM (select
client.id AS id,
client.name AS name,
(CASE WHEN DATEDIFF(CURDATE(), date) <= 30 THEN NULL end) AS `C1`,
(CASE WHEN DATEDIFF(CURDATE(), date) <= 365 THEN NULL end) AS `C2`,
(select count(*) from appointment where id=client.id) as `C3`
from
(client left join appointment on((client.id = appointment.id))))
group by `total`.`id`;
Вопрос 1 : Как я могу включить пропущенные встречи за последние 30 дней в это представление? Пропущенные встречи будут реализованы как встречи за последние 30 дней, где конечной переменной было «Не показывать». Я думал, что это будет, добавив эти две строки:
count(`C4`) AS `Missed30`
(CASE WHEN DATEDIFF(CURDATE(), date) <= 365 where outcome = 'No Show' THEN NULL end) AS `C4`
Вопрос 2 :
Как превратить весь оператор в оператор вставки, чтобы периодически захватывать данные из представления. Это будет входить в таблицу с именем apt_total. Я попробовал несколько вариантов, но ничто не приблизилось к работе.
Спасибо, любая помощь будет принята с благодарностью.