Le titre réécrit est : Obtenez les produits achetés par les 10 premiers clients
P粉386318086
2023-08-29 21:31:29
<p>Je souhaite écrire une requête SQL dans laravel/php pour obtenir les 10 principaux produits différents achetés par les clients. </p>
<p>La structure de ma table est la suivante :</p>
<ul>
<li><code>Commandes</code>Tableau (ID client, ID produit, etc...)</li>
<li><code>Produits</code>Tableau (ID produit, nom du produit, etc...)</li>
</ul>
<p>Voici ma tentative de requête : </p>
<pre class="brush:php;toolbar:false;">SELECT produits.*
DE produits
OÙ produits.id = [SELECT DISTINCT (products.id)
DE commandes
OÙ customer.id=id->list(10)]</pre></p>
Je peux voir la direction que vous essayez d'aller avec votre requête, mais malheureusement, cela ne vous donnera pas les 10 meilleurs résultats. Au lieu de cela, vous risquez d'obtenir aucun résultat :
=
signifie que vous recherchez une correspondance exacte et que votre sous-requête doit renvoyer 10 lignes de données, si vous utilisez cette opération, vous obtiendrez cette erreur.Mais si vous le remplacez par
IN
, vous risquez d'obtenir cette erreurEn fonction de vos tentatives actuelles, votre choix est d'en faire une
JOIN
. Par contre, je me demandais comment tu avais fait ton top 10 ? Je vois que vous recherchez un produit dans le top 10, mais sur quelle base ? Montant des ventes? Quantité commandée ?En ce sens, voici un exemple du top 10 des produits triés par quantité commandée.
La sous-requête n'est pas nécessaire, mais j'imite la sous-requête que vous avez essayée, même si le processus n'est pas exactement le même. Voici la version sans la sous-requête :
Ou peut-être recherchez-vous le top 10 trié par montant des ventes ?
Démo violon