Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Delete de lignes dans 2 tables

1 réponse
Avatar
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

1 réponse

Avatar
Jean-Nicolas BERGER
dans un premier temps, ouvrir une transaction, pour qu'en cas de souci lors
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" a écrit dans le message de
news:
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