Non è possibile utilizzare lo stesso nome di tabella nella stessa query A MENO CHE sia alias come qualcos'altro per impedire una condizione di join ambiguo. Ecco perché non è permesso. Dovrei notare, è anche meglio usare sempre qualificare table.field o alias.field in modo che altri sviluppatori dietro di te non debbano indovinare quali colonne provengono da quali tabelle.
Quando si scrive una query, si sa con cosa si sta lavorando, ma per quanto riguarda la persona dietro di te in fase di sviluppo. Se qualcuno non è abituato a quali colonne provengono da quale tabella, può essere ambiguo da seguire, specialmente qui a S/O. Con la qualifica sempre utilizzando il riferimento e il campo della tabella, o il riferimento alias e il campo, è molto più facile da seguire.
select
SomeField,
AnotherField
from
OneOfMyTables
Join SecondTable
on SomeID = SecondID
Confronti che, per
select
T1.SomeField,
T2.AnotherField
from
OneOfMyTables T1
JOIN SecondTable T2
on T1.SomeID = T2.SecondID
In questi due scenari, che si preferisce leggere ... Avviso, Ho semplificato la query utilizzando alias più brevi "T1" e "T2", ma potrebbero essere qualsiasi cosa, anche un acronimo o un alias abbreviato dei nomi delle tabelle ... "oomt" (uno dei miei tavoli) e "st" (secondo tavolo). Oppure, come qualcosa di super lungo come in altri post ...
Select * from ContractPurchaseOffice_AgencyLookupTable
vs
Select * from ContractPurchaseOffice_AgencyLookupTable AgencyLkup
Se si desidera mantenere i join di qualifica o le colonne di campi, quale preferiresti guardare.
Spero che questo chiarisca la tua domanda.
@Siva corretto, grazie –