mathieu147 Posté 29 Avril 2007 Posté 29 Avril 2007 (modifié) Bonjour, Dans le cadre d'une application de gestion de vidéothèque, j'ai une table Emprunt et une table Exemplaire: CREATE TABLE `Emprunt` ( `code_personne` int(11) NOT NULL, `code_film` int(11) NOT NULL, `code_exemplaire` int(11) NOT NULL, `date_emprunt` date NOT NULL, `date_restitution` date NOT NULL, PRIMARY KEY (`code_personne`,`code_film`,`code_exemplaire`,`date_emprunt`)) ENGINE=MyISAM DEFAULT CHARSET=latin1; -- -- Contenu de la table `Emprunt` -- INSERT INTO `Emprunt` (`code_personne`, `code_film`, `code_exemplaire`, `date_emprunt`, `date_restitution`) VALUES (1, 1, 1, '2007-04-20', '2007-04-21'), (1, 2, 1, '2007-04-21', '2007-04-23'), (2, 1, 1, '2007-04-21', '2007-04-22'), (3, 3, 1, '2007-04-22', '2007-04-25'), (4, 4, 1, '2007-04-23', '0000-00-00'), (5, 4, 3, '2007-04-24', '0000-00-00'); -- -------------------------------------------------------- -- -- Structure de la table `Exemplaire` -- CREATE TABLE `Exemplaire` ( `code_exemplaire` int(11) NOT NULL auto_increment, `code_film` int(11) NOT NULL, `code_media` int(11) NOT NULL, `code_localisation` int(11) NOT NULL, PRIMARY KEY (`code_exemplaire`,`code_film`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5; -- -- Contenu de la table `Exemplaire` -- INSERT INTO `Exemplaire` (`code_exemplaire`, `code_film`, `code_media`, `code_localisation`) VALUES (1, 1, 1, 1), (1, 2, 2, 2), (2, 1, 2, 3), (2, 2, 3, 4), (3, 1, 1, 1), (4, 1, 1, 2), (4, 2, 2, 3), (4, 3, 3, 4); J'aimerais déterminer le code_film et le code_exemplaire des exemplaires qui ne sont actuellement pas en location. Un exemplaire est en location si, dans la table Emprunt, il y a une ligne dont le code_exemplaire ET le code_film correspondent, et que la date de restitution est "0000-00-00"). J'ai pensé que je pourrais faire SELECT code_exemplaire, code_filmFROM Exemplaire pour avoir les code_film et code_exemplaire de tous les exemplaires, puis SELECT code_exemplaire, code_filmFROM EmpruntWHERE date_restitution!="0000-00-00" puis de faire la différence des deux, donc ceci; SELECT code_exemplaire, code_filmFROM ExemplaireDIFFSELECT code_exemplaire, code_filmFROM EmpruntWHERE date_restitution!="0000-00-00" sauf que j'ai une error in my SQL syntax... Apparemment on ne peut pas utiliser DIFF en MySQL? Comment puis-je faire? Merci d'avance! Modifié 30 Avril 2007 par mathieu147
mathieu147 Posté 30 Avril 2007 Auteur Posté 30 Avril 2007 J'ai trouvé SELECT DISTINCT code_film, code_exemplaireFROM Exemplaire LEFT JOIN Emprunt USING (code_film, code_exemplaire)WHERE date_restitution!="0000-00-00"OR date_restitution IS NULL
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant