<?php $model = new waModel(); // correct tag counters $sql = "\n UPDATE `shop_tag` t JOIN (\n SELECT t.id, t.name, t.count, COUNT(pt.product_id) AS product_count\n FROM `shop_tag` t\n LEFT JOIN `shop_product_tags` pt ON t.id = pt.tag_id\n GROUP BY t.id\n ) r ON t.id = r.id\n SET t.count = r.product_count\n"; $model->exec($sql); $sql = "\n SELECT DISTINCT pt.tag_id\n FROM `shop_product_tags` pt\n LEFT JOIN `shop_tag` t ON pt.tag_id = t.id\n WHERE t.id IS NULL\n"; // delete hanging product-tag items $ids = array_keys($model->query($sql)->fetchAll('tag_id')); if ($ids) { $shop_product_tag = new shopProductTagsModel(); $shop_product_tag->deleteByField('tag_id', $ids); }