2009-10-28 5 views
-2

Je tente d'écrire un script php pour comparer les lignes de la base de données, puis ajoute les quantités correspondant à l'identifiant du produit. Sur la base de cusotmer_idCombiner les lignes sql avec id même, somme et mettre à jour le total

Exemple:

mydb.cart

id, customer_id, cart_id, product_id, qty, price 

1, 0001000, 4545453, 20, 10, 12.99 
2, 0001000, 7473432, 20, 2, 12.99 

Result 
3, 0001000, 7473432, 20, 12, 25.98 

essayer de fusionner les informations de panier d'une session précédente.

Toutes les suggestions sont appréciés,

Merci

Répondre

0
select sum(id) 
    , customer_id 
    , cart_id 
    , product_id 
    , sum(qty) 
    , sum(price) 
    from mydb.cart 
group 
    by customer_id 
    , cart_id 
    , product_id 
1

Vous pouvez probablement faire tout cela dans SQL au lieu de PHP. Mettez à jour la nouvelle ligne du panier et supprimez l'ancienne. Je ne sais pas si c'est la syntaxe MySQL correcte, mais il devrait être quelque chose comme ce qui suit:

UPDATE cart SET qty = (
    SELECT SUM(qty) FROM cart c WHERE c.id = id 
    GROUP BY c.customer_id, c.product_id) 
    WHERE EXISTS (
    SELECT 'x' FROM cart c2 
    WHERE c1.customer_id = c2.customer_id 
    AND c1.product_id = c2.product_id 
    AND c1.id < id); 

DELETE FROM cart c1 WHERE EXISTS (
    SELECT 'x' FROM cart c2 
    WHERE c1.customer_id = c2.customer_id 
    AND c1.product_id = c2.product_id 
    AND c1.id < id); 
Questions connexes