2015-06-02 4 views
0

У меня есть эта таблица, которая должна получать ежедневный ввод данных о показаниях пробега автомобиля.Выяснение наличия ежедневной вставки в таблицу mysql

CREATE TABLE `table_vehicle_info` (
    `id` int(11) NOT NULL , 
    `reg_no` varchar(50) NOT NULL, 
    `vehicle_type` int(11) NOT NULL, 
    `engine_no` varchar(50) NOT NULL DEFAULT "DDDD", 
    `chassis_no` varchar(50) , 
    `model` int(11) DEFAULT NULL, 
    `picture` varchar(50) , 
    `rent` double , 
    `eng_power` int(11) DEFAULT NULL, 
    `color` varchar(12) DEFAULT NULL, 
    `rent_status` varchar(50) DEFAULT NULL, 
    `reg_city` varchar(50) DEFAULT NULL, 
    `location` varchar(50) DEFAULT NULL, 
    `sub_type` varchar(50) DEFAULT NULL, 
    `purchase_date` date DEFAULT NULL, 
    `purchase_amount` double DEFAULT NULL, 
    `sum_insured` double DEFAULT NULL, 
    `token_tax_amount` double DEFAULT NULL, 
    `token_period_from` date DEFAULT NULL, 
    `reg_placed_at` varchar(50) DEFAULT NULL, 
    `funded_by` varchar(50) DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=99 DEFAULT CHARSET=latin1; 

CREATE TABLE `tbl_readings` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `vehicle_id` int(11) NOT NULL, 
    `km_driven` int(11) NOT NULL, 
    `dt_of_reading` datetime NOT NULL, 
    `dt_of_entry` datetime NOT NULL, 
    `entry_user` varchar(50) NOT NULL, 
    PRIMARY KEY (`id`), 
    KEY `vehicle_id` (`vehicle_id`), 
    CONSTRAINT `tbl_readings_ibfk_1` FOREIGN KEY (`vehicle_id`) REFERENCES `table_vehicle_info` (`id`) ON DELETE CASCADE ON UPDATE CASCADE 
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=latin1; 

INSERT INTO table_vehicle_info (id,reg_no,vehicle_type) 
VALUES (1, "B-5484", 12 ); 

INSERT INTO tbl_readings VALUES (NULL,1,100,'2015-6-1',NOW(), 'user'); 

Я хочу сгенерировать отчет, показывающий, какое сообщение не вводится ежедневно.

+3

Обеспечить некоторые выборочные данные и ожидаемый результат выборки данных. –

+0

http://sqlfiddle.com/#!2/f47d1/1 Ежедневный отчет, показывающий идентификатор транспортного средства, чтение которого не было введено за предыдущий день –

+0

Добавить код того, что вы пытались сделать, и образцы данных – Jaques

ответ

0

Вы можете попробовать следующий запрос, он возвращает все vehicle_id от tbl_readings, для которого нет следующего входа в систему.

SELECT vehicle_id 
FROM `tbl_readings` 
WHERE DATE(DATE_ADD(dt_of_entry,INTERVAL 1 DAY)) NOT IN 
    (SELECT DATE(dt_of_entry) FROM `tbl_readings`) 

EDIT

Попробуйте это,

SELECT t1.vehicle_id 
FROM `tbl_readings` t1 
LEFT JOIN (SELECT vehicle_id, 
     DATE(DATE_ADD(dt_of_reading,INTERVAL -1 DAY)) as reading_date 
    FROM `tbl_readings`) t2 
ON t1.vehicle_id = t2.vehicle_id AND t1.dt_of_reading = t2.reading_date 
WHERE t2.vehicle_id IS NULL 
GROUP BY t1.vehicle_id 
HAVING COUNT(t1.vehicle_id) > 1; 

Проверьте fiddle

+0

Я хочу проверить те транспортные средства, для которых нет записи за предыдущий день –

Смежные вопросы