I have TableA that can have many TableB related to it and TableB can have many TableC rows related to it which TableC has many TableD rows. So TableA -> TableB -> TableC -> TableD. What I want to do is given the TableA row id, select all the TableD rows that are related through other tables and delete all of them.
TableA | TableB | TableC | TableD
--------------------------------------
tableAId | tableAId | tableBId | tableCId
| tableBId | tableCId | tableDId
and the query i've tried:
DELETE FROM TableD
WHERE TableA.tableAId = 2
AND TableA.tableAId= TableB.tableAId
AND TableB.tableBId= TableC.tableBId
AND TableC.tableCId = TableD.tableCId
sample table
TableA TableB TableC TableD
tableAID | tableAID tableBId | tableBId tableCId | tableCId tableDId
---------|--------------------|---------------------|---------------------
1 | 1 15 | 15 5 | 6 4
2 | 2 16 | 16 6 | 5 3
5 14
5 11
Desired result, Given tableAId = 1
TableA TableB TableC TableD
tableAID | tableAID tableBId | tableBId tableCId | tableCId tableDId
---------|--------------------|---------------------|---------------------
1 | 1 15 | 15 5 | 6 4
2 | 2 16 | 16 6 |
DELETE FROM TableD USING TableA, TableB, TableC WHERE ...More aboutUSINGclause in the documentation: postgresql.org/docs/current/static/sql-delete.html