W "events" zapisuję pewne zdarzenia powtarzalne w czasie wykonywane przez osoby z tabelki "persons". Każde zdarzenie ma jak widać dwa stany. Moje pytanie jest nastepujące:
Jak wydostać sName wszystkich osób, których ostatnim wykonanym zdarzeniem jest 'In'?
Próbowąłem pokombinowąć trochę, ale jedyne co mi wysżło to:
SELECT persons.sCode, persons.sName, events.iTimestamp FROM events LEFT JOIN persons ON events.sCode = persons.sCode WHERE sAction = 'In' GROUP BY events.sCode ORDER BY events.iTimestamp DESC
-- Wersja serwera: 4.0.22 -- Wersja php: 5.0.2 CREATE TABLE `events` ( `iID` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, `sCode` varchar(12) NOT NULL DEFAULT '0', `iTimestamp` int(11) NOT NULL DEFAULT '0', `sAction` SET('In','Out') DEFAULT NULL, PRIMARY KEY (`iID`) ) TYPE=MyISAM; CREATE TABLE `persons` ( `iID` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, `sCode` varchar(12) NOT NULL DEFAULT '0', `sName` varchar(255) NOT NULL DEFAULT '', `iBirthdate` int(11) NOT NULL DEFAULT '0', `sAppointmentCode` varchar(12) NOT NULL DEFAULT '0', `sAppointmentName` varchar(255) NOT NULL DEFAULT '', `sPhoto` longblob NOT NULL, PRIMARY KEY (`iID`) ) TYPE=MyISAM;