sql >> Base de Datos >  >> RDS >> Mysql

[MySQL]:ELIMINAR filas de dos tablas dependientes

No puede eliminar de una tabla mientras existan registros dependientes en otra tabla. En tu caso, la dependencia es así

Transaction <- Purchase -> Item

Por lo tanto, primero debe eliminar cualquier compra antes de poder eliminar transacciones.

Como alternativa a ese enfoque de dos pasos, recomendaría configurar un ON DELETE CASCADE restricción y ve con esto:

DELETE 
  Transaction 
WHERE 
  Transaction_ID IN (
    SELECT 
      Transaction_ID 
    FROM
      Purchase INNER JOIN Item ON Item.Item_ID = Purchase.Item_ID
    WHERE
      Item.Client_ID = <your Client ID here>
  )

Tenga en cuenta que esto elimina cualquier Transaction (y, a través de CASCADE, cualquier Purchase ) donde hay un Item dependiente con un Client_ID coincidente , independientemente de que existan otros artículos en él. Si esto no es lo que desea, la pregunta debe refinarse.