Abfragen kombinieren In einer Tabelle werden alle Ereignisse einer Zutrittskontrolle protokolliert. Hinter der Zahl im Feld Relais verbergen sich die Zustände 1=“Türöffner, kommen“, 2=“gehen“.
CREATE TABLE `tocalog` (
`BenutzerID` int(11) default NULL,
`Name` varchar(50) character set latin1 collate latin1_general_ci default NULL,
`Finger` int(11) default NULL,
`TerminalID` int(11) default NULL,
`Modul` varchar(45) character set latin1 collate latin1_general_ci default NULL,
`Zeit` varchar(45) character set latin1 collate latin1_general_ci default NULL,
`Relais` int(11) default NULL,
`ECode` int(11) default NULL,
`EText` varchar(45) character set latin1 collate latin1_general_ci default NULL,
`id` int(5) unsigned NOT NULL auto_increment,
`timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC;
Nun suche ich eine Möglichkeit, die Daten für jede Person für eine Zeitauswertung zu bekommen.
Meine Idee:
SELECT ‚Name’ FROM ‚tokalog’ WHERE ‚Name’ <> ‚’ GROUP BY ‚name’ //listet alle gespeicherten Personen auf, ohne Systemmeldungen
SELECT ‚Zeit’ FROM ‚tokalog’ WHERE ‚Name’ = select von oben AND ‚Relais’ = 1 ORDER BY ‚Zeit’
SELECT ‚Zeit’ FROM ‚tokalog’ WHERE ‚Name’ = select von oben AND ‚Relais’ = 2 AND ‘zeit’ > select von oben ORDER BY ‚Zeit’
Zu beachten ist, dass das Relais 1 öfters vorkommt wie Relais 2 (wg. Türöffner), pro Tag kann mehrmals Relais 2 vorkommen (Mittagspause, Dienstgang)
Schön wäre es, daraus eine einzige Abfrage zu basteln.
Vielen Dank |