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

Messages postés
12
Date d'inscription
mercredi 2 juillet 2014
Statut
Membre
Dernière intervention
22 novembre 2014
- - Dernière réponse :  angeltlse - 6 juin 2019 à 12:52
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
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
12
Date d'inscription
mercredi 2 juillet 2014
Statut
Membre
Dernière intervention
22 novembre 2014
1
1
Merci
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

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 64112 internautes nous ont dit merci ce mois-ci

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

A+
albamak
Messages postés
2
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
1
0
Merci
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
1265
Date d'inscription
jeudi 22 avril 2010
Statut
Membre
Dernière intervention
19 mai 2015
140
0
Merci
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+ !