2010-04-14 4 views
0

Je voudrais supprimer toutes les lignes trouvées par cette requête:MySQL Supprimer de 1 table, en utilisant plusieurs tables

SELECT cart_abandon.* 
FROM cart_abandon, cart_product, txn_product, users 
WHERE cart_abandon.cartid = cart_product.cartid 
AND cart_product.productid = txn_product.productid 
AND txn_product.username = users.username 
AND users.id = cart_abandon.userid 
AND txn_product.txndate >= cart_abandon.abandondate 

La chose à garder à l'esprit est que la requête utilise ici 4 tables différentes, mais je seulement vouloir supprimer les lignes de 1 table (cart_abandon).

Existe-t-il un moyen facile de faire cela? Peut être ça: ?

DELETE cart_abandon 
FROM cart_abandon, cart_product, txn_product, users 
WHERE cart_abandon.cartid = cart_product.cartid 
AND cart_product.productid = txn_product.productid 
AND txn_product.username = users.username 
AND users.id = cart_abandon.userid 
AND txn_product.txndate >= cart_abandon.abandondate 

Est-ce valable? Correct?

Répondre

0

Vérifiez supprimer plusieurs tables sur la syntaxe http://dev.mysql.com/doc/refman/5.1/en/delete.html

+0

Je l'ai fait, et ce n'était vraiment pas clair pour moi, c'est pourquoi je suis venu ici ... –

+0

Mais ce que j'ai compris de cela m'a conduit à la requête proposée ci-dessus - est-ce exact? –

+1

Il semble que votre requête est correcte, vous utilisez la première syntaxe (les lignes sont supprimées de la table [s] avant DE: DELETE cart_abandon DE – a1ex07

0
DELETE cart_abandon 
WHERE cartid IN (
    SELECT cart_abandon.cartid 
    FROM cart_abandon, cart_product, txn_product, users 
    WHERE cart_abandon.cartid = cart_product.cartid 
    AND cart_product.productid = txn_product.productid 
    AND txn_product.username = users.username 
    AND users.id = cart_abandon.userid 
    AND txn_product.txndate >= cart_abandon.abandondate 
) 
Questions connexes