「犬」タグがつけられた記事がたくさんあります。「猫」という新しいタグを付けました。「犬」のタグが付いている記事に「猫」のタグをつけたいです。いくつかの記事には両方のタグが付いています。これらを「猫」で再タグ付けしたくありません。
つまり、記事に「犬」タグがあり、「猫」タグがまだない場合、「猫」タグを追加したいということです。これが私が書いたスクリプトです:
<?php
# Get "cat" tag id
$sql = "SELECT `id`
FROM tags
WHERE name = 'cat'
LIMIT 1";
$cat_tag = mysql_fetch_assoc(mysql_query($sql));
# Get "dog" tag id
$sql = "SELECT `id`
FROM tags
WHERE name = 'dog'
LIMIT 1";
$dog_tag = mysql_fetch_assoc(mysql_query($sql));
######################################
# Get all nodes tagged with "dog"
$sql = "SELECT `node_id`
FROM node_tags
WHERE `tag_id` = '" . $dog['id'] . "'";
$query = mysql_query($sql);
while($row = mysql_fetch_assoc($query)) {
# Check to see if current node has "cat" tag already
$sql = "SELECT COUNT(*)
FROM node_tags
WHERE `node_id` = '" . $row['node_id'] . "'
AND `tag_id` = '" . $cat['id'] . "'";
$check_already_exists = mysql_fetch_assoc(mysql_query($sql));
# If node doesn't already have "cat" tag, then add it
if($check_already_exists == '0') {
$sql = "INSERT INTO `node_tags`(node_id, tag_id)
VALUES('" . $row['node_id'] . "', '" . $cat['id'] . "')";
mysql_query($sql);
}
}
?>
これを MySQL マネージャー ツールから直接実行できるようにしたいと考えています。したがって、PHP を含めることはできませんが、1 つの大きな SQL クエリにする必要があります。これを行う方法?