SQL - Consulta de eliminación con unión

Resuelto
Hola,

Actualmente estoy tratando de establecer una consulta de eliminación con unión, pero solo he llegado a un resultado parcial.

Tengo dos tablas:
tabla1(NumContrat,X1,Y1,Z1)
tabla2(NumContrat,X2,Y2,Z2)

Por lo tanto, mi deseo es eliminar en tabla1 todos los contratos que figuran en tabla1 y tabla2.

He establecido el siguiente código SQL:

DELETE *
FROM tabla1
WHERE tabla2.NumContrat = tabla1.NumContrat ;

Sin embargo, he creado un programa donde soy yo quien debe definir las filas a eliminar indicando los números de contrato.

Agradezco de antemano su ayuda.

Atentamente.

3 respuestas

  • Votos
  • Fecha
  • Fecha descendente
  1. ¡Muchas gracias por tu respuesta, Morgothal!

    Acabo de probar tu solución. Dado que hay dos atributos "NumContrat" en la tabla1 y en la tabla2, la consulta se bloquea en la línea 3. No entiende de qué tabla estamos hablando a pesar del FROM en la línea 4. En fin, el código funciona perfectamente salvo por este detalle, ¡muchas gracias!

    Para aquellos que lleguen a este tema, aquí está el código que retendría:

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

    Saludos.
    1. Sí, es exactamente lo que hay que hacer :)
      Bien hecho

      Hasta luego
    2. ce exilante, tu es la réponse Morgothal
    3. muchas gracias, pude resolver mi problema después de muchas búsquedas
  2. También intenté el código anterior, en vano..

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

    Un poco de ayuda sería bienvenida..

    Le agradezco de antemano.

    Saludos.
    1. Hola,
      Haré esto así:

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


      ¡Hasta luego!

      --
      -------------------
      Atentamente,
      Clément