SELECT avec des conditions
Posté : 29 mars 2006, 14:31
Bonjour à tous. J'ai constitué une petite base de données qui va me servir à gérer l'outillage de plusieurs machines. Je vous explique tout d'abord les données.
Il y a plusieurs machines dans l'atelier, chaque machine a ses outils qui sont montés dedans, et chaque outil possède certaines caractéristiques. Les caractéristiques des outils peuvent changer, et c'est l'utilisateur qui se chargera de le faire.
Pour des raisons de suivi, il est nécessaire de garder en base de donnée tout trace des changements effectués, afin de reconstituer un historique.
Je voudrais construire une requête SQL qui sélectionne, pour une machine donnée, les outils et leurs caractéristiques, mais seulement sur les dernières valeurs entrées.
Voici le code de la base de données: (simple pour le moment)
Est ce possible? Comment faire?
Au final, il y aura 6 machines dans la BDD, avec environ 80 outils différents, et plein de modifications sur ces outils.
Il y a plusieurs machines dans l'atelier, chaque machine a ses outils qui sont montés dedans, et chaque outil possède certaines caractéristiques. Les caractéristiques des outils peuvent changer, et c'est l'utilisateur qui se chargera de le faire.
Pour des raisons de suivi, il est nécessaire de garder en base de donnée tout trace des changements effectués, afin de reconstituer un historique.
Je voudrais construire une requête SQL qui sélectionne, pour une machine donnée, les outils et leurs caractéristiques, mais seulement sur les dernières valeurs entrées.
Voici le code de la base de données: (simple pour le moment)
CREATE TABLE `outils` (
`id` smallint(6) NOT NULL auto_increment,
`machine` enum('CH40','CV30','C200','HES300','T20','Tour Hermes') NOT NULL default 'CH40',
`outil` tinyint(4) NOT NULL default '0',
`X` float NOT NULL default '0',
`Z` float NOT NULL default '0',
`R` float NOT NULL default '0',
`C` tinyint(4) NOT NULL default '0',
`edit` varchar(80) NOT NULL default '',
`date_heure` datetime NOT NULL default '0000-00-00 00:00:00',
`image` varchar(40) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
INSERT INTO `outils` VALUES (1, 'CH40', 1, 63.156, 130.458, 0, 0, 'Prof2', '2006-03-28 15:35:17', 'Images/CH40.jpg');
INSERT INTO `outils` VALUES (2, 'CH40', 2, 12.85, 36.59, 2, 0, 'Prof2', '2006-03-28 16:32:45', 'Images/CH40.jpg');
INSERT INTO `outils` VALUES (3, 'CH40', 1, 10, 20, 0, 0, 'Eleve', '2006-03-29 09:32:53', 'Images/CH40.jpg');
INSERT INTO `outils` VALUES (4, 'CH40', 2, 12, 22, 2, 0, 'Eleve2', '2006-03-29 12:35:38', 'Images/CH40.jpg');
J'ai déjà construit cela, mais ça m'affiche toutes les lignes concernant cette machine...
SELECT `id`, `machine`, `outil`, `X`, `Z`, `R`, `C`, `edit`, `date_heure`, `image` FROM `outils` WHERE `machine`='CH40' ORDER BY `outil`
Je voudrais que la requête ne me prenne en compte pour cette machine, que les dernières valeurs entrées pour l'outil 1 et l'outil 2.Est ce possible? Comment faire?
Au final, il y aura 6 machines dans la BDD, avec environ 80 outils différents, et plein de modifications sur ces outils.