1) Table Families, ajout du champ FamilyMonthlyContributionMode, unsigned tinyin(3), 0 par défaut. 2) création de la table HistoFamilies : CREATE TABLE `HistoFamilies` ( `HistoFamilyID` mediumint(8) unsigned NOT NULL, `HistoDate` datetime NOT NULL, `HistoFamilyMonthlyContributionMode` tinyint(3) unsigned NOT NULL, `HistoFamilyBalance` decimal(10,2) NOT NULL, `FamilyID` smallint(5) unsigned NOT NULL, `TownID` smallint(5) unsigned NOT NULL, PRIMARY KEY (`HistoFamilyID`), KEY `FamilyID` (`FamilyID`,`TownID`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='Table which contains history of families.'; 3) MAJ fichiers php/js/css 4) Initialisation de l'historique : **** Pour initialiser l'historique de chaque famille (penser à changer la valeur initiale du compteur !) **** INSERT INTO HistoFamilies(HistoFamilyID, HistoDate, HistoFamilyMonthlyContributionMode, HistoFamilyBalance, FamilyID, TownID ) SELECT @id := @id + 1 AS Id, DATE_FORMAT( b.BillDate, '%Y-%m-%d 18:00:00' ) AS ForDate, 0 AS MODE, -(b.BillPreviousBalance + b.BillMonthlyContribution + b.BillCanteenAmount + b.BillNurseryAmount ) AS Amount, b.FamilyID, f.TownID FROM Families f, Bills b, (SELECT @id := 0) c WHERE b.FamilyID = f.FamilyID AND b.BillForDate = '2013-07-31' ORDER BY f.FamilyID INSERT INTO HistoFamilies(HistoFamilyID, HistoDate, HistoFamilyMonthlyContributionMode, HistoFamilyBalance, FamilyID, TownID ) SELECT @id := @id + 1 AS Id, '2013-09-29 19:00:00' AS ForDate, 0 AS MODE, -1*b.BillPreviousBalance AS Amount, b.FamilyID, f.TownID FROM Families f, Bills b, (SELECT @id := 76) c WHERE b.FamilyID = f.FamilyID AND b.BillForDate = '2013-09-30' ORDER BY f.FamilyID INSERT INTO HistoFamilies(HistoFamilyID, HistoDate, HistoFamilyMonthlyContributionMode, HistoFamilyBalance, FamilyID, TownID ) SELECT @id := @id + 1 AS Id, DATE_FORMAT( b.BillDate, '%Y-%m-%d 20:00:00' ) AS ForDate, 0 AS MODE, -(b.BillPreviousBalance + b.BillMonthlyContribution + b.BillCanteenAmount + b.BillNurseryAmount ) AS Amount, b.FamilyID, f.TownID FROM Families f, Bills b, (SELECT @id := 148) c WHERE b.FamilyID = f.FamilyID AND b.BillForDate = '2013-09-30' ORDER BY f.FamilyID INSERT INTO HistoFamilies(HistoFamilyID, HistoDate, HistoFamilyMonthlyContributionMode, HistoFamilyBalance, FamilyID, TownID ) SELECT @id := @id + 1 AS Id, NOW() AS ForDate, f.FamilyMonthlyContributionMode, f.FamilyBalance, f.FamilyID, f.TownID FROM Families f, Bills b, (SELECT @id := 220) c WHERE b.FamilyID = f.FamilyID AND b.BillForDate = '2013-09-30' ORDER BY f.FamilyID **** Pour supprimer les doublons dans l'historique **** SELECT h2.HistoFamilyID FROM HistoFamilies h1, HistoFamilies h2 WHERE h1.HistoFamilyID <> h2.HistoFamilyID AND h2.HistoFamilyID > h1.HistoFamilyID AND h1.FamilyID = h2.FamilyID AND h1.TownID = h2.TownID AND h1.HistoFamilyMonthlyContributionMode = h2.HistoFamilyMonthlyContributionMode AND h1.HistoFamilyBalance = h2.HistoFamilyBalance ORDER BY h2.HistoFamilyID