J'ai une table 'panier' comme suit:
+----+---------+-----------+----------+----------+
| id | orderID | productID | quantity | status |
+----+---------+-----------+----------+----------+
| 1 | 3443 | 333 | 2 | complete |
| 2 | 3443 | 202 | 4 | complete |
+----+---------+-----------+----------+----------+
Ainsi, pour chaque commande, une nouvelle ligne est ajoutée pour chaque article du panier.
Je veux donc obtenir un «clients également achetés» à partir de cette table. J'utilise MySQL.
Comment puis-je faire ceci? Voici ce que j'ai proposé au début:
SELECT * FROM `cart` WHERE `status` = 'complete' AND `productID` = '333' ORDER BY `ts` DESC
Mais bien sûr, cela ne me montre que les lignes avec ce productID. Ce que je veux vraiment, ce sont les autres produits des commandes qui contiennent ce productID.
Comment puis-je m'y prendre?
4 réponses
Je ferais probablement cela avec une auto-jointure sur la table cart
:
Select Distinct mapped.productID
From cart main
Join cart mapped On main.orderID = mapped.orderID
Where main.productID != mapped.productID
And main.productID = 333
Il y a déjà deux bonnes réponses. J'essaie juste de vous donner une idée de l'ordre (ou de l'importance) du productID que vous montrez. Vous pouvez par exemple utiliser une requête comme celle-ci, en utilisant le nombre de fois qu'un certain productID a été acheté (autre que 'ts'):
SELECT `productID`, COUNT(*) AS RC
FROM `cart`
WHERE `orderID` IN (SELECT `orderID` FROM `cart` WHERE `productid`=333 AND `status` = 'complete' )
AND `productID` <> '333'
GROUP BY `productID`
ORDER BY RC DESC
Si vous souhaitez que les produits soient dans le même ordre, vous pouvez effectuer une requête par orderID
, par exemple:
SELECT *
FROM cart
WHERE orderID = 3443
AND productID <> 333;
Cela vous donnera tous les other
produits inclus dans la même commande.
L'utilisation pourrait utiliser un filtre IN comme celui-ci.
SELECT
productID
FROM
cart
WHERE
orderID IN(
SELECT
orderId
FROM
cart
WHERE
productID = 333
AND
status = 'complete'
)
AND
productID <> 333
AND
status = 'complete'
De nouvelles questions
php
PHP est un langage de script largement utilisé, de haut niveau, dynamique, orienté objet et interprété, principalement conçu pour le développement Web côté serveur. Utilisé pour les questions sur le langage PHP.