Potrebuji udelat historii zaznamu, jak na to?
Mam zhruba 2 napady.
1.
CREATE TABLE IF NOT EXISTS `nz_index` (
`id_index` int(10) unsigned NOT NULL auto_increment,
`id_table` int(10) unsigned DEFAULT NULL,
`id_row` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id_index`),
INDEX `id_table` (`id_table`),
INDEX `id_row` (`id_row`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Vest 3 tabulky, pomocne tab. tables a index. Tables seznam id_table, name, Index se seznamem zaznamu, id_radku v tabulce id_table.
V tabulce data (id_table) bude id_radku (primary), id_index, data.
INSERT:
- insert do tab. data -> id_row;
- insert do tab. index: id_table -> id_index
- update do tab. data: id_index
UPDATE:
- insert do tab. data: id_index -> id_row
- update do tab. index: id_row
SELECT jen posledni zaznamy
- select z tab. index LEFT JOIN tab. data, id_row
(cili, posledni upraveny zaznam bude v tabulce index, id radku z tabulky data)
SELECT historie zmen pro dany radek
- select z tab. data group by id_index
2.
CREATE TABLE IF NOT EXISTS `nz_forms` (
`id_form` int(10) unsigned NOT NULL auto_increment,
`id_formgroup` int(10) unsigned DEFAULT NULL,
`data` varchar(40) DEFAULT NULL,
`time` datetime DEFAULT NULL,
PRIMARY KEY (`id_form`),
INDEX `id_formgroup` (`id_formgroup`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Cili, vest jen tabulku se zaznamy.
Jenze tam nevim, jak ziskat jen SELECT poslednich zaznamu.
Pripadne ted resim jeste jeden program, a tam bych potreboval SELECT takovy, aby slo filtrovat treba podle nazvu, ale byli tam vsechny zaznamy i se zmenami, zmeny u sebe. (konkretne je to seznam inet-zasuvek na budove a potrebujeme jako admini vedet, kdo tam delal zmeny a jake, kdy, js vypada asi takto, data hashovana http://mlich.zam.slu.cz/…uvky-csv.htm)
id, id_root, jmeno, prijmeno, time
1, 1, Tonda, Kucra, 0 (casove razitko, pro jednoduchost pouziji male cislo)
2, 1, Tonda, Kucera, 2 (upraven zaznam id=1 v case 2)
3, 3, Matej, Slama, 1
A ted bych to chtel seradit podle prijmeni DESC, ale aby prvni radek byla posledni zmena
3, 3, Matej, Slama, 1
2, 1, Tonda, Kucera, 2 (nejnovejsi)
1, 1, Tonda, Kucra, 0 (starsi -1)
x, 1, ..., ... (starsi -2 ...)
A nebo opacne, aby posledni zmena byla na konci
3, 3, Matej, Slama, 1
x, 1, ..., ... (starsi -2 ...)
1, 1, Tonda, Kucra, 0 (starsi -1)
2, 1, Tonda, Kucera, 2 (nejnovejsi)
Jak na to? Co je lepsi? Pripadne, jak udelat selecty, update, insert?