Een vraagje voor alle SQL-guru's hier. Vast heel simpel, maar ik ben inmiddels al even bezig.
Database is Mysql v4.1
Tabel tblresults_9: (onder staat een volledige Mysql dump van de structuur)
`result_id`,
`lab_id`,
`dtm_insert`,
....
`note_z` longtext
Dat ziet er ongeveer zo uit:
111 189 2005-09-12 10:28:52 NULL bla
105 192 2005-09-11 14:45:56 NULL geen
131 192 2005-09-12 15:36:54 NULL blabla
98 194 2005-09-09 16:11:15 NULL bla
Nu wil ik het volgende bereiken:
111 189 2005-09-12 10:28:52 NULL bla
131 192 2005-09-12 15:36:54 NULL blabla
98 194 2005-09-09 16:11:15 NULL bla
Ik wil dus alleen de (volledige) records zien met de laatste datum. Van 192 houdt ik dus het record van 12-9 over.
Nu heb ik al het een en ander geprobeerd. Zoals:
Select * from tblresults_9 group by lab_id having dtm_insert=max(dtm_insert);
Maar dan verdwijnt record met lab_id 192.
Select *,max(dtm_insert) from tblresults_9 group by lab_id;
Levert wel een maximum datum in, maar de rest van het record is van de vorige datum.
Hoe dit nu op te lossen?
------------------------------------------------------
Volledige structuur van de tabel
------------------------------------------------------
CREATE TABLE `tblresults_9` (
`result_id` int(11) NOT NULL auto_increment,
`lab_id` int(11) NOT NULL default '0',
`dtm_insert` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
`plas_z` varchar(50) default NULL,
`assa_z` smallint(6) default NULL,
`meth_z` smallint(6) default NULL,
`equi_z` smallint(6) default NULL,
`ress_z` float default NULL,
`ress_z2` float default NULL,
`lot_z` text,
`resq_z` float default NULL,
`resq_z2` float default NULL,
`colq_z` smallint(6) default NULL,
`uplim_z` float default NULL,
`unit_z` smallint(6) default NULL,
`clas_z` smallint(6) default NULL,
`base_z` smallint(6) default NULL,
`nmeth_z` varchar(100) default NULL,
`note_z` longtext,
PRIMARY KEY (`result_id`),
KEY `PRIMARY_KEY` (`lab_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='Results D-Dimer' AUTO_INCREMENT=146 ;
Database is Mysql v4.1
Tabel tblresults_9: (onder staat een volledige Mysql dump van de structuur)
`result_id`,
`lab_id`,
`dtm_insert`,
....
`note_z` longtext
Dat ziet er ongeveer zo uit:
111 189 2005-09-12 10:28:52 NULL bla
105 192 2005-09-11 14:45:56 NULL geen
131 192 2005-09-12 15:36:54 NULL blabla
98 194 2005-09-09 16:11:15 NULL bla
Nu wil ik het volgende bereiken:
111 189 2005-09-12 10:28:52 NULL bla
131 192 2005-09-12 15:36:54 NULL blabla
98 194 2005-09-09 16:11:15 NULL bla
Ik wil dus alleen de (volledige) records zien met de laatste datum. Van 192 houdt ik dus het record van 12-9 over.
Nu heb ik al het een en ander geprobeerd. Zoals:
Select * from tblresults_9 group by lab_id having dtm_insert=max(dtm_insert);
Maar dan verdwijnt record met lab_id 192.
Select *,max(dtm_insert) from tblresults_9 group by lab_id;
Levert wel een maximum datum in, maar de rest van het record is van de vorige datum.
Hoe dit nu op te lossen?
------------------------------------------------------
Volledige structuur van de tabel
------------------------------------------------------
CREATE TABLE `tblresults_9` (
`result_id` int(11) NOT NULL auto_increment,
`lab_id` int(11) NOT NULL default '0',
`dtm_insert` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
`plas_z` varchar(50) default NULL,
`assa_z` smallint(6) default NULL,
`meth_z` smallint(6) default NULL,
`equi_z` smallint(6) default NULL,
`ress_z` float default NULL,
`ress_z2` float default NULL,
`lot_z` text,
`resq_z` float default NULL,
`resq_z2` float default NULL,
`colq_z` smallint(6) default NULL,
`uplim_z` float default NULL,
`unit_z` smallint(6) default NULL,
`clas_z` smallint(6) default NULL,
`base_z` smallint(6) default NULL,
`nmeth_z` varchar(100) default NULL,
`note_z` longtext,
PRIMARY KEY (`result_id`),
KEY `PRIMARY_KEY` (`lab_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='Results D-Dimer' AUTO_INCREMENT=146 ;