2011-01-10 3 views
1

J'utilise la requête suivante, pour supprimer les lignes de deux tablesComment compter le nombre de lignes supprimées d'une table dans la structure delete + join?

delete 
    itc, ic 
from 
    incoming_tours ic 
join 
    incoming_tours_cities itc on itc.id_parrent = ic.id 
where 
    ic.sale = '5' 

Comment puis-je obtenir le nombre de lignes affectées de la table ic? (mysql_affected_rows renvoie le nombre total, je n'ai besoin que d'une table). (j'utilise les moteurs MyISAM dans mes tableaux, c'est pourquoi je ne pas utiliser les clés étrangères ici)

Merci beaucoup

Répondre

1

Compter les lignes d'avance.

select count(*) as sale_rows from ic where ic.sale = '5' 

Est-ce dans une transaction pour vous assurer que la table ne change pas entre les SELECT et DELETE.

+0

Donc, il n'y a aucun moyen de faire cela en une seule requête? – Simon

+0

@Syom: Non, je suppose que non. Jeu d'esprit: Comment imaginez-vous cela devrait fonctionner? La syntaxe "supprimer de plusieurs tables" n'impose aucune limite sur le nombre de tables que vous pouvez supprimer. Comment 'mysql_affected_rows()' devrait-il savoir quel numéro vous voulez voir? Il n'accepte aucun argument, après tout. – Tomalak

+0

oui, je suis d'accord, mais je pensais peut-être que je peux modifier la requête de quelque façon, pour atteindre l'effet. – Simon

0

Vous ne pouvez pas utiliser affected_rows pour cela. Je pense que vous pouvez utiliser une variable de session dans un déclencheur après suppression sur ic pour compter les lignes supprimées.

Questions connexes