Bonjour,
Je suis en-train de créer un gestionnaire de bibliothèque d'images avec un système de publication d'articles, un peu comme le WordPress...
J'ai les tables suivantes :
images(id_image, nom_image, format)
article(id_article)
article_image(idai, fk_id_article, fk_id_image)
Je souhaite que si l'internaute supprime un article on vérifie si l'image utilisée par cet article est encore utilisée par un autre article, si elle n'est plus utilisée par aucun article alors on recupere son nom et format pour la supprimer sur le serveur (puis après de la BDD accessoirement...).
Le nom d'enregistrement et le format de l'image sont dans la table images...
Pour récupérer la liste des images utilisées par l'internaute pour illustrer l'article j'utilise la requête suivante (Me retourne 6 résultats) :
SELECT * FROM article_image AI, images IM WHERE AI.fk_id_article = '1' AND AI.fk_image = IM.id_image
Pour voir si l'image est encore utilisée sur un autre article j'utilise (Me retourne 1 résultat, l'image est donc encore utilisée par un autre article different de celui que je veux supprimer) :
SELECT IM.id_image FROM article_image AI, images IM WHERE AI.fk_id_article <> '1' AND AI.fk_id_image = IM.id_image
Pour que le résultats retourné par SQL ne comporte que les images qui ne sont plus utilisées sur d'autres articles j'utilise NOT IN (J'ai également testé avec le NOT EXISTS sans plus de succès) :
SELECT * FROM article_image AI, images IM WHERE AI.fk_id_article = '1' AND AI.fk_image = IM.id_image NOT IN (SELECT IM.id_image FROM article_image AI, images IM WHERE AI.fk_id_article <> '1' AND AI.fk_id_image = IM.id_image)
Je m'attends à recevoir 5 enregistrements, mais m'en renvoie 0...
Quelqu'un pourrait-il m'aider ?
Merci d'avance pour votre aide.
Bien cordialement,
Partager