Dans le cadre d'une application de gestion de vidéothèque, j'ai une table Emprunt et une table Exemplaire:
CODE
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;
`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
CODE
SELECT code_exemplaire, code_film
FROM Exemplaire
FROM Exemplaire
pour avoir les code_film et code_exemplaire de tous les exemplaires, puis
CODE
SELECT code_exemplaire, code_film
FROM Emprunt
WHERE date_restitution!="0000-00-00"
FROM Emprunt
WHERE date_restitution!="0000-00-00"
puis de faire la différence des deux, donc ceci;
CODE
SELECT code_exemplaire, code_film
FROM Exemplaire
DIFF
SELECT code_exemplaire, code_film
FROM Emprunt
WHERE date_restitution!="0000-00-00"
FROM Exemplaire
DIFF
SELECT code_exemplaire, code_film
FROM Emprunt
WHERE 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!