GNT sans publicité, site mobile, fonctionnalitées exclusives...

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
Lire la réponse

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jean-Nicolas BERGER
Le #11412771
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" 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


Publicité
Suivre les réponses
Poster une réponse
Anonyme