SQL - Consulta de eliminación con unión

Resuelto
toxik56 Mensajes publicados 12 Estado Miembro -  
 kiko -
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

  1. toxik56 Mensajes publicados 12 Estado Miembro 4
     
    ¡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.
    3
    1. Morgothal Mensajes publicados 1350 Estado Miembro 184
       
      Sí, es exactamente lo que hay que hacer :)
      Bien hecho

      Hasta luego
      0
    2. albamak Mensajes publicados 1 Estado Miembro
       
      ce exilante, tu es la réponse Morgothal
      0
    3. angeltlse
       
      muchas gracias, pude resolver mi problema después de muchas búsquedas
      0
    4. kiko
       
      ¡Muchas graaaaaaacias!
      0
  2. toxik56 Mensajes publicados 12 Estado Miembro 4
     
    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.
    0
  3. Morgothal Mensajes publicados 1350 Estado Miembro 184
     
    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
    0