SQL - Requête suppression avec jointure [Résolu/Fermé]

Signaler
Messages postés
12
Date d'inscription
mercredi 2 juillet 2014
Statut
Membre
Dernière intervention
22 novembre 2014
-
 angeltlse -
Bonjour,

Je cherche actuellement à établir une requête suppression avec jointure mais je ne suis parvenu que partiellement à un résultat.

J'ai deux tables :
table1(NumContrat,X1,Y1,Z1)
table2(NumContrat,X2,Y2,Z2)

Ainsi, mon souhait serait de supprimer dans table1 tous les contrats qui figurent dans table1 et table2.

J'ai établi le code SQL suivant :

DELETE *
FROM table1
WHERE Table2.NumContrat = Table1.NumContrat ;

Seulement, j'ai créé un programme où c'est à moi de définir les lignes à supprimer en indiquant les numéros de contrat..

Je vous remercie par avance pour votre aide.

Cdt

3 réponses

Messages postés
12
Date d'inscription
mercredi 2 juillet 2014
Statut
Membre
Dernière intervention
22 novembre 2014
3
Merci beaucoup pour ta réponse Morgothal !

Je viens de tester ta solution. Du fait qu'il y a deux attributs "NumContrat" respectivement dans table1 et table2, la requête bloque à la ligne 3. Il ne comprend pas de quelle table on parle malgré le FROM en ligne 4. Bref', le code marche parfaitement hormis ce détail, merci infiniment !

Pour ceux qui tomberaient sur ce topic, voici le code que je retiendrais :

DELETE * FROM table1
WHERE NumContrat in
(SELECT table1.NumContrat
FROM table1 INNER JOIN table2 ON table1.NumContrat = table2.NumContrat)

Cdt
2
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60511 internautes nous ont dit merci ce mois-ci

Messages postés
1235
Date d'inscription
jeudi 22 avril 2010
Statut
Membre
Dernière intervention
19 mai 2015
157
Oui c'est tout à fait ce qu'il faut faire :)
Bien joué

A+
Messages postés
1
Date d'inscription
lundi 7 juillet 2014
Statut
Membre
Dernière intervention
7 juillet 2014

ce exilent, ta réponse Morgothal
merci beaucoup j'ai pu solutionner mon problème après de nombreuses recherches
Messages postés
12
Date d'inscription
mercredi 2 juillet 2014
Statut
Membre
Dernière intervention
22 novembre 2014
3
J'ai également essayé le code ci-dessus, en vain..

DELETE FROM table1
USING table1 LEFT JOIN table2 ON (table1.NumContrat = table2.NumContrat)
WHERE table1.NumContrat = table2.NumContrat ;

Un peu d'aide serait la bienvenue..

Je vous remercie d'avance.

Cdt
Messages postés
1235
Date d'inscription
jeudi 22 avril 2010
Statut
Membre
Dernière intervention
19 mai 2015
157
Hello,
Je ferait ça comme ça :

DELETE * FROM table1 
WHERE  NumContrat in
(SELECT NumContrat 
FROM table1 INNER JOIN table2 ON table1.NumContrat = table2.NumContrat)



A+ !