Alasan Anda mendapatkan kesalahan adalah karena aliasing AS X
. Tetapi masalahnya adalah Anda menggunakan *
, alih-alih mencantumkan bidang yang Anda inginkan.
Dalam kueri pertama, SELECT *
sebenarnya menghasilkan bidang seperti:
A.id, A.name, A.description, B.id, B.name, B.date_started, C.id, C.name, C.isDeleted
Ini berfungsi dengan baik, kecuali jika Anda mencoba mereferensikan bidang dengan namanya secara langsung dan tidak menggunakan aliasnya. Bagaimanapun juga, mesin SQL Anda tidak akan bermasalah dengan ini, apa pun yang Anda lakukan dengan kumpulan hasil mungkin masih bermasalah.
Namun ketika Anda memindahkan kueri Anda ke dalam subkueri dan alias hasil AS X
, maka Anda akan mendapatkan:
X.id, X.name, X.description, X.id, X.name, X.date_started, X.id, X.name, X.isDeleted
Sekarang Anda dapat melihat mengapa itu mengeluh. Anda dapat melihat mengapa menggunakan*
. juga buruk , karena kombinasi ini dapat bekerja untuk beberapa waktu, dan kemudian Anda menambahkan bidang baru ke tabel yang ada, yang sama dengan tabel lain, dan bang, setiap kueri yang telah Anda tulis dengan kedua tabel ini, sekarang harus ditulis ulang.