重寫後的標題為:取得前10位顧客購買的產品
P粉386318086
2023-08-29 21:31:29
<p>我想在laravel/php中寫一個SQL查詢,以獲得客戶購買的前10個不同的產品。 </p>
<p>我的表格架構如下:</p>
<ul>
<li><code>Orders</code>表(客戶ID、產品ID等...)</li>
<li><code>Products</code>表(產品ID、產品名稱等...)</li>
</ul>
<p>這是我的查詢嘗試:</p>
<pre class="brush:php;toolbar:false;">SELECT products.*
FROM products
WHERE products.id = [SELECT DISTINCT (products.id)
FROM orders
WHERE customer.id=id->list(10)]</pre></p>
我可以看出你嘗試的查詢方向,但不幸的是這不會給你前10個結果。相反,你可能根本不會得到任何結果:
=
表示你正在尋找一個精確匹配,你的子查詢應該返回10個行的數據,如果你使用這個操作,你將收到這個錯誤。但如果你將其改為
IN
,你可能會收到這個錯誤根據你目前的嘗試,你的選擇是進行一個
JOIN
。然而,我想知道你是如何得到你的前10個的?我可以看到你正在尋找產品的前10個,但基於什麼?銷售金額?訂購數量?在這個意義上,這是一個按訂購數量排序的前10個產品的範例。
子查詢是不必要的,但我在模仿你嘗試的子查詢,雖然過程並不完全相同。這是沒有子查詢的版本:
或者你可能正在尋找按銷售金額排序的前10個?
示範fiddle
#