Al enkele dagen zit ik met het volgende te worstelen. Op internet kan ik er niets over vinden en ook in #mysql op efnet hebben ze me nog niet echt kunnen helpen. Dat terwijl het volgens mij toch een gebruikelijk probleem is.
Ik probeer in MySQL5 uit een tabel de laatste regels te selecteren per service.
In de tabel zitten gegevens van services; een datum+tijd waarop de check is gedaan en de status (0=unavailable, 1=available)
Ik wil van iedere service de laatste status.
voldoet niet, omdat deze een willekeurig status pakt (in #mysql hadden ze het over 'status is floating')
Wat is de standaard oplossing in een dergelijk geval? En hoe kan ik het oplossen?
Mijn tabel:
Mijn data:
Ik wil in uit deze data dus terugkrijgen:
80 12:26:44 0
22 12:26:44 0
Ik probeer in MySQL5 uit een tabel de laatste regels te selecteren per service.
In de tabel zitten gegevens van services; een datum+tijd waarop de check is gedaan en de status (0=unavailable, 1=available)
Ik wil van iedere service de laatste status.
SQL:
1
| SELECT service, MAX(checked), status FROM servicestatus GROUP BY service; |
voldoet niet, omdat deze een willekeurig status pakt (in #mysql hadden ze het over 'status is floating')
Wat is de standaard oplossing in een dergelijk geval? En hoe kan ik het oplossen?
Mijn tabel:
SQL:
1
2
3
4
5
6
7
| CREATE TABLE `test`.`servicestatus` ( `id` int(10) unsigned NOT NULL auto_increment, `service` int(10) unsigned NOT NULL, `status` tinyint(1) NOT NULL, `checked` datetime NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; |
Mijn data:
SQL:
1
2
3
4
5
6
7
| INSERT INTO `servicestatus` (`id`, `service`, `status`, `checked`) VALUES (1, 80, 1, '2007-05-12 12:26:09'), (2, 22, 1, '2007-05-12 12:26:09'), (3, 80, 0, '2007-05-12 12:26:24'), (4, 22, 1, '2007-05-12 12:26:24'), (5, 80, 0, '2007-05-12 12:26:44'), (6, 22, 0, '2007-05-12 12:26:44'); |
Ik wil in uit deze data dus terugkrijgen:
80 12:26:44 0
22 12:26:44 0