Saya memiliki dua tabel dan saya perlu membuat tampilan. Tabelnya adalah:
credit_orders(id, client_id, number_of_credits, payment_status)
credit_usage(id, client_id, credits_used, date)
Saya menggunakan kueri berikut untuk melakukan ini. Kueri tanpa bagian "buat tampilan" berfungsi dengan baik tetapi dengan "buat tampilan", ini menunjukkan kesalahan "PILIH Tampilan berisi subkueri di klausa FROM". Apa yang bisa menjadi masalah & solusi yang mungkin:
create view view_credit_status as
(select credit_orders.client_id,
sum(credit_orders.number_of_credits) as purchased,
ifnull(t1.credits_used,0) as used
from credit_orders
left outer join (select * from (select credit_usage.client_id,
sum(credits_used) as credits_used
from credit_usage
group by credit_usage.client_id) as t0
) as t1 on t1.client_id = credit_orders.client_id
where credit_orders.payment_status='Paid'
group by credit_orders.client_id)
10.2
dari versi10.2.1
Lihat - jira.mariadb.org/browse/MDEV-3944Jawaban:
Sesuai dokumentasi:
Dokumen MySQL
Solusi Anda adalah membuat tampilan untuk setiap subkueri Anda.
Kemudian akses tampilan tersebut dari dalam tampilan Anda
view_credit_status
sumber
sumber
Seperti yang dikatakan dalam dokumentasi MySQL terbaru tentang batasan tampilan :
Ini berarti, memilih MySQL v5.7.7 atau yang lebih baru atau mengupgrade instance MySQL yang ada ke versi tersebut, akan menghapus batasan ini pada tampilan sepenuhnya.
Namun, jika Anda memiliki versi produksi MySQL saat ini yang lebih lama dari v5.7.7, maka penghapusan batasan pada tampilan ini hanya menjadi salah satu kriteria yang dinilai saat membuat keputusan untuk meningkatkan atau tidak. Menggunakan teknik pemecahan masalah yang dijelaskan dalam jawaban lain mungkin merupakan solusi yang lebih layak - setidaknya dalam jangka pendek.
sumber
Menurut saya, MySQL 3.6 memberikan kesalahan berikut sedangkan MySQL 3.7 tidak lagi error. Saya belum menemukan apa pun di dokumentasi terkait perbaikan ini.
sumber