Hola pani_alex.
No sé si interpreté la situación, pero no debería existir conflicto si declaras diferentes alias para diferentes columnas.
Realiza la siguiente prueba donde veras listados los diferentes alias de columnas en un ListBox:
Código Delphi
[-]
...
var
i: Integer;
begin
with TuQuery do
begin
Close;
SQL.Clear;
SQL.Add('SELECT P.ID AS P_ID, Q.ID AS Q_ID, R.ID AS R_ID,');
SQL.Add('P.NOMBRE AS P_NOMBRE, Q.NOMBRE AS Q_NOMBRE, R.NOMBRE AS R_NOMBRE');
SQL.Add('FROM TABLA1 P, TABLA2 Q, TABLA3 R'); Open;
for i:= 0 to FieldCount-1 do
ListBox1.Items.Add(Fields[i].FieldName)
end;
...
(*) Trabaja del mismo modo aplicado a una sola tabla:
Código Delphi
[-]
....
SQL.Add('FROM TABLA1 P, TABLA1 Q, TABLA1 R');
...
Claro está que los alias deberán ser distintos entre sí.
Saludos