SQL - Requête suppression avec jointure

Résolu
toxik56 Messages postés 12 Statut Membre -  
 kiko -
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

  1. toxik56 Messages postés 12 Statut Membre 4
     
    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
    3
    1. Morgothal Messages postés 1350 Statut Membre 184
       
      Oui c'est tout à fait ce qu'il faut faire :)
      Bien joué

      A+
      0
    2. albamak Messages postés 1 Statut Membre
       
      ce exilent, ta réponse Morgothal
      0
    3. angeltlse
       
      merci beaucoup j'ai pu solutionner mon problème après de nombreuses recherches
      0
    4. kiko
       
      merciiiiiiiiiiiiiiiiiiiiiiiiiiiiiii bcp
      0
  2. toxik56 Messages postés 12 Statut Membre 4
     
    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
    0
  3. Morgothal Messages postés 1350 Statut Membre 184
     
    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+ !
    0