Tajuk yang ditulis semula ialah: Dapatkan produk yang dibeli oleh 10 pelanggan pertama
P粉386318086
2023-08-29 21:31:29
<p>Saya ingin menulis pertanyaan SQL dalam laravel/php untuk mendapatkan 10 produk berbeza teratas yang dibeli oleh pelanggan. </p>
<p>Struktur jadual saya adalah seperti berikut:</p>
<ul>
<li><kod>Pesanan</kod>Jadual (ID Pelanggan, ID Produk, dll...)</li>
<li><kod>Produk</kod>Jadual (ID produk, nama produk, dll...)</li>
</ul>
<p>Ini ialah percubaan pertanyaan saya: </p>
<pre class="brush:php;toolbar:false;">PILIH produk.*
DARI produk
WHERE products.id = [SELECT DISTINCT (products.id)
DARIPADA pesanan
WHERE customer.id=id->list(10)]</pre></p>
Saya dapat melihat arah yang anda cuba tuju dengan pertanyaan anda, tetapi malangnya ia tidak akan memberikan anda 10 keputusan teratas. Sebaliknya, anda mungkin tidak mendapat hasil sama sekali:
=
bermakna anda sedang mencari padanan yang tepat dan subkueri anda harus mengembalikan 10 baris data, jika anda menggunakan operasi ini, anda akan mendapat ralat ini.Tetapi jika anda menukarnya kepada
IN
, anda mungkin mendapat ralat iniBerdasarkan percubaan semasa anda, pilihan anda adalah untuk membuatnya
JOIN
. Walau bagaimanapun, saya tertanya-tanya bagaimana anda mendapat 10 teratas anda? Saya dapat lihat anda sedang mencari produk dalam 10 teratas, tetapi berdasarkan apa? Jumlah Jualan? Kuantiti pesanan?Dalam pengertian ini, berikut ialah contoh 10 produk teratas yang disusun mengikut kuantiti pesanan.
Subkueri tidak perlu, tetapi saya meniru subkueri yang anda cuba, walaupun prosesnya tidak betul-betul sama. Berikut ialah versi tanpa subkueri:
Atau mungkin anda sedang mencari 10 teratas yang disusun mengikut jumlah jualan?
Demo biola