Salut les Kheys-Codeurs
J'ai besoin d'aide en SQL là
Je suis un gros noob en SQL (j'ai appris ça vite fait à la fac...).
En gros, je veux créer un trigger qui me supprime mes lignes lorsque j'udpate de deux tables disctincts. Ca, ça va, j'ai réussi à le faire. Mes requêtes de suppression:
DELETE (SELECT * FROM REQUEST WHERE REQUEST.ID = (SELECT REQUEST_PARAMETER.ID FROM REQUEST_PARAMETER WHERE REQUEST_PARAMETER.VALUE = :new.NUMPROD));
DELETE (SELECT * FROM REQUEST_PARAMETER WHERE REQUEST_PARAMETER.ID = (SELECT REQUEST_PARAMETER.ID FROM REQUEST_PARAMETER WHERE REQUEST_PARAMETER.VALUE = :new.NUMPROD));
Comme vous pouvez le voir, c'est assez complexes. En gros, je dois récupérer un ID dans la table "REQUEST_PARAMETER" en utilisant le numéro (identifiant) produit. Puis supprimer tout ce qui correspond à cet ID dans la table "REQUEST" et "REQUEST_PARAMETER".
Bref, ça, ça marche.
Maintenant ce que je voulais faire, c'est "simplifier" ces suppressions: N'avoir plus qu'une requête (au lieu de deux) en utilisant un JOIN. Instinctivement, j'ai fais ça:
DELETE (SELECT * FROM REQUEST INNER JOIN REQUEST_PARAMETER ON REQUEST.ID = REQUEST_PARAMETER.ID WHERE REQUEST.ID = (SELECT REQUEST_PARAMETER.ID FROM REQUEST_PARAMETER WHERE REQUEST_PARAMETER.VALUE = :new.NUMPROD));
Sauf que maintenant ça ne marche que à moitié .
J'ai bien la suppression dans la table "REQUEST_PARAMETER" mais plus pour "REQUEST".
Et je ne comprends pas. Est-ce que quelqu'un peut m'expliquer pourquoi ? Et si c'est possible de faire avec un JOIN (et comment du coup) ?
C'est frustrant car je touche au but après avoir pas mal galéré une partie de la matinée dessus.
Merci d'avance les Kheys