Ciao ragazzi, ho un problemino che con il vostro aiuto mi potrebbe far risparmiare ore di lavoro...
il problema è il seguente:
ho creato una tabella che la riporto
CREATE TABLE IF NOT EXISTS `controllo` (
`id` int(11) DEFAULT NULL,
`data` varchar(100) DEFAULT NULL,
`time` varchar(80) DEFAULT NULL,
`accespoint` varchar(80) DEFAULT NULL,
`card` varchar(80) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Dump dei dati per la tabella `controllo`
--
INSERT INTO `controllo` (`id`, `data`, `time`, `accespoint`, `card`) VALUES
(12198, '2/6/2010', '12.11', 'entrata', '722FD4'),
(12201, '2/6/2010', '12.22', 'uscita', '722FD4'),
(12197, '2/5/2010', '11.33', 'entrata', '521F6D'),
(12206, '2/6/2010', '14.19', 'uscita', '521F6D'),
(12206, '2/6/2010', '14.19', 'uscita', '521F6D'),
(12233, '2/6/2010', '14.19', 'uscita', '521F6D'),
......
(12199, '2/6/2010', '12.12', 'entrata', '54FC89'),
(12200, '2/6/2010', '12.21', 'uscita', '54FC89'),
(12202, '2/6/2010', '13.27', 'entrata', '521ECC'),
(12203, '2/6/2010', '13.43', 'uscita', '521ECC'),
(12204, '2/6/2010', '13.54', 'entrata', '192545'),
(12205, '2/6/2010', '14.10', 'uscita', '192545'),
(12207, '2/6/2010', '15.42', 'entrata', '225115'),
(12208, '2/6/2010', '16.24', 'entrata', '192549');
ovviamente con diverse migliaia di righe... qui ne metto poche, per farvi capire meglio.
vorrei una query che mi tira fuori solo la differenza della colonna 'time'+'uscita' meno 'time'+'entrata' con la chiave primaria 'card' in base all'id' sequenziale, e in + mi tira fuori solo quelli con la differenza maggiore di 30 minuti.
ovvero, card=722FD4 --> 12.22(uscita) - 12.11(entrata) = 0.11minuti (che non va bene come risultato voluto..)
mentre
card = 521F6D --> 14.19(uscita) - 11.33(entrata) = 2 ore 26 minuti (quello che voglio io :mavieni: )
'id' accesso al varco --> 12197... 12206 deve essere in sequenza, ovvero nn mi deve fare la differenza tra:
(12233, '2/6/2010', '14.19', 'uscita', '521F6D') meno (12206, '2/6/2010', '14.19', 'uscita', '521F6D'), ma come sopra citato.
mi rendo conto che la query è quasi impossibile, ma tuttavia sperò che qualcuno c'è la fa :ilpirata:
il problema è il seguente:
ho creato una tabella che la riporto
CREATE TABLE IF NOT EXISTS `controllo` (
`id` int(11) DEFAULT NULL,
`data` varchar(100) DEFAULT NULL,
`time` varchar(80) DEFAULT NULL,
`accespoint` varchar(80) DEFAULT NULL,
`card` varchar(80) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Dump dei dati per la tabella `controllo`
--
INSERT INTO `controllo` (`id`, `data`, `time`, `accespoint`, `card`) VALUES
(12198, '2/6/2010', '12.11', 'entrata', '722FD4'),
(12201, '2/6/2010', '12.22', 'uscita', '722FD4'),
(12197, '2/5/2010', '11.33', 'entrata', '521F6D'),
(12206, '2/6/2010', '14.19', 'uscita', '521F6D'),
(12206, '2/6/2010', '14.19', 'uscita', '521F6D'),
(12233, '2/6/2010', '14.19', 'uscita', '521F6D'),
......
(12199, '2/6/2010', '12.12', 'entrata', '54FC89'),
(12200, '2/6/2010', '12.21', 'uscita', '54FC89'),
(12202, '2/6/2010', '13.27', 'entrata', '521ECC'),
(12203, '2/6/2010', '13.43', 'uscita', '521ECC'),
(12204, '2/6/2010', '13.54', 'entrata', '192545'),
(12205, '2/6/2010', '14.10', 'uscita', '192545'),
(12207, '2/6/2010', '15.42', 'entrata', '225115'),
(12208, '2/6/2010', '16.24', 'entrata', '192549');
ovviamente con diverse migliaia di righe... qui ne metto poche, per farvi capire meglio.
vorrei una query che mi tira fuori solo la differenza della colonna 'time'+'uscita' meno 'time'+'entrata' con la chiave primaria 'card' in base all'id' sequenziale, e in + mi tira fuori solo quelli con la differenza maggiore di 30 minuti.
ovvero, card=722FD4 --> 12.22(uscita) - 12.11(entrata) = 0.11minuti (che non va bene come risultato voluto..)
mentre
card = 521F6D --> 14.19(uscita) - 11.33(entrata) = 2 ore 26 minuti (quello che voglio io :mavieni: )
'id' accesso al varco --> 12197... 12206 deve essere in sequenza, ovvero nn mi deve fare la differenza tra:
(12233, '2/6/2010', '14.19', 'uscita', '521F6D') meno (12206, '2/6/2010', '14.19', 'uscita', '521F6D'), ma come sopra citato.
mi rendo conto che la query è quasi impossibile, ma tuttavia sperò che qualcuno c'è la fa :ilpirata: