Delete de lignes dans 2 tables
Le
Richard
Bonjour.
j'ai 2 tables liés et je veux suprimer des lignes en commun dans les 2 les
tables pour un critére table 1 "materiel" statut = detruit
le probléme est que le point commun est un numéro de clé "Clé materiel",
donc comment détruire les éléments de la table 2 qui n'exiterons plus dans la
table 1 aprés supression des lignes avec statut détruit dans la table 1
Table 1 "materiel"
Clé materiel
N°serie
Date achat
Statut
Table 2 "Historique"
Ancien Utilisateur
nouvel utilisateur
date mouvement
Clé materiel
J'ai besoin d'une explication simple je ne connais pas le SQL. je vais
certainement travailler en copier coller avec vos propositions.
Je n'ai pas d'autres moyens pour faire cet manip l'interface utilisateur de
l'application ne sais pas faire le nettoyage des tables jointes.
Ceci donne donc une table 2 avec des lignes sans liaisons avec la table 1
Merci de votre aide
j'ai 2 tables liés et je veux suprimer des lignes en commun dans les 2 les
tables pour un critére table 1 "materiel" statut = detruit
le probléme est que le point commun est un numéro de clé "Clé materiel",
donc comment détruire les éléments de la table 2 qui n'exiterons plus dans la
table 1 aprés supression des lignes avec statut détruit dans la table 1
Table 1 "materiel"
Clé materiel
N°serie
Date achat
Statut
Table 2 "Historique"
Ancien Utilisateur
nouvel utilisateur
date mouvement
Clé materiel
J'ai besoin d'une explication simple je ne connais pas le SQL. je vais
certainement travailler en copier coller avec vos propositions.
Je n'ai pas d'autres moyens pour faire cet manip l'interface utilisateur de
l'application ne sais pas faire le nettoyage des tables jointes.
Ceci donne donc une table 2 avec des lignes sans liaisons avec la table 1
Merci de votre aide

Poser une question


de la suppression du matériel, il ne reste pas de matériel qui aurait perdu
son historique
BEGIN TRANSACTION
Ensuite, effacer les éléments de la table Historique
delete Historique from Historique, materiel where Historique.[Clé
materiel]=materiel.[Clé materiel] and StatutÞtruit
Ensuite, effacer le materiel
delete materiel from materiel where StatusÞtruit
Enfin, valider la transaction
COMMIT TRANSACTION
Voilà.
Question au passage, as-tu bien une contrainte de clé étrangère sur ta
colonne Clé materiel ? Si oui, tu n'aurais de toute manière pas pu effacer
le matériel si l'historique était encore présent. Si non, c'est pas bien
(mauvais modèle de données), et il faudrait que tu vois les historiques sans
matériel associé
select Historique.* from Historique left join materiel on Historique.[Clé
materiel]=materiel.[Clé materiel] where materiel.[Clé materiel] is null
Remarque complémentaire : renseigne-toi sur l'option ON DELETE CASCADE pour
la définiton de la clé étrangère...
JN.
"Richard" news: