O motivo pelo qual você recebeu o erro é por causa do alias
AS X
. Mas o problema realmente é que você usou *
, em vez de listar os campos desejados. Na primeira consulta, o
SELECT *
realmente produz campos como:A.id, A.name, A.description, B.id, B.name, B.date_started, C.id, C.name, C.isDeleted
Isso funciona bem, a menos que você tente referenciar um campo diretamente por seu nome e não use seu alias. De qualquer forma, seu mecanismo SQL não terá problemas com isso, o que quer que você esteja fazendo com o conjunto de resultados ainda pode ter um problema.
No entanto, quando você move sua consulta para uma subconsulta e alia os resultados
AS X
, então você termina com:X.id, X.name, X.description, X.id, X.name, X.date_started, X.id, X.name, X.isDeleted
Agora você pode ver porque está reclamando. Você pode ver por que também é ruim usar
*
, porque essa combinação pode funcionar por algum período de tempo, e então você adiciona um novo campo a uma tabela existente, que é o mesmo que outra tabela, e bang, toda consulta que você escreveu com essas duas tabelas, agora precisa ser reescrito.