I have a Delphi app where I display a list of games that have been played from a query like this:
select g.*, gt.id, gt.descr
from GAMES g
inner join game
You need to set TADODataset's "Unique Table" property after opening your dataset.
ADODataset.Properties['Unique Table'].Value := 'GAMES';
You need to use the Unique Table dynamic property
ADOQuery1.Properties['Unique Table'].Value := 'GAMES';
From the MSDN ADO Documentation
If the Unique Table dynamic property is set, and the Recordset is the result of executing a JOIN operation on multiple tables, then the Delete method will only delete rows from the table named in the Unique Table property.