No poner el AS es actualmente parte del estandar. Eso se eliminó de los requerimientos del ANSI-SQL hace años.
Respecto al paréntesis, si hubieses puesto un paréntesis de más, te hubiese dado un error de sintaxis y no una falta de alias en la tabla derivada. Si te fijas en el segmento:
Código SQL:
Ver originalLEFT JOIN
(SELECT *
FROM tb_comprobante_contable
WHERE dc_anho_contable = 2010)
eso es una tabla derivada de una subconsulta, y no tiene alias. El siguiente alias corresponde a este segmento:
Código MySQL:
Ver original FROM tb_comprobante_contable_detalle
AS deta
FROM tb_comprobante_contable
WHERE dc_anho_contable
= 2010) -- < acá le valta el alias ) AS comp
ON deta.dc_comprobante
= comp.dc_comprobante
No me parece que esté sobrando un paréntesis...