Удаление записей в бд.

Тема закрыта
374
.
Доброго времени суток. Делаю модуль теги. Есть две таблицы:
- tags_name (поле "name", поле "translit")
- tags_data (поле "name_tags", поле "id_file")

При добавлении тега к файлу в таблицу "tags_name" добавляются теги (name - название тега, translit - английское название тега) если такого тега еще нет.

В таблицу "tags_data" добавляется название тега, id файла.

Собственно вопрос, как сделать проверку на то, чтобы из таблицы "tags_name" удалились все теги, которые не добавлены к файлам, т.е. пустые теги, т.е. их нет в таблице "tags_data".
Заранее благодарю.
.
FixleR, Мне кажется ты не правильно таблицы организовал. Зачем тебе две? У тебя запись дублируется как я понял "name", для чего? id файла логичнее в первой таблице хранить. Либо я не понял прикола
.
Ей 25
Чисто теоретически у него все правильно... Но в первую таблицу надо ИД добавить. А во второй вместо имени тега юзать ИД.
А как удалить... Запрос в 2 таблицы надо делать. Я с телефона не напишу... Погугли, там все есть.
.
Ей 25
# Str@nnik (15.03.2016 / 21:33)
FixleR, Мне кажется ты не правильно таблицы организовал. Зачем тебе две? У тебя запись дублируется как я понял "name", для чего? id файла логичнее в первой таблице хранить. Либо я не понял прикола
Да, ты не совсем понял "прикол". Подумай)
.
Str@nnik, Логика такова, что когда добавляешь файл, пишешь теги через запятую. Эти теги разделяются в строки и каждый тег добавляется в таблицу tags_name, ( если такого тега там ещё нет), а в таблице "tags_data" идёт присвоение каждого тега к файлу. Т.е. Таблица "tags_name" нужна для вывода всех тегов на отдельную страницу, чтобы они не повторялись. А tags_data вывод тегов на странице определенного файла.
.
К примеру есть файл с тегами "тест5, тест6". Добавляем ещё один файл с тегами "тест5, тест7". И получается что тег "тест5" в таблице "tags_name" уже имеется,поэтому он не добпаляется туда, а добавляется только тег "тест7". А в таблицу tags_data добааляется уже оба тега, независимо есть там такой тег или нет, каждый тег присваивается к id файла.
.
FixleR
Пока на ум пришло загнать все теги из таблицы "tags_name" в цикл, и сверять каждый тег, есть ли такой же тег в таблице tags_data, если нет, то удалить тег, но как-то это не то.
.
INSERT ... ON DUPLICATE KEY UPDATE
.
Сделай связь один ко многим между таблицами где хранится инфа о файле и tags_data, при удалении файла удаление привязки тегов произойдет само, перед удалением файла вытащи привязанные теги, после удаления проверь вытащенный тег на наличие других привязанных файлах, если нет то закидывай айди(любой идентификатор сойдет) тега в массив, и после проверки
$empty_tags = array(1,2,3);//пример массива с пустыми тегами
$sql = 'DELETE FROM `tags_name` WHERE `id` IN ('. implode(',', $empty_tags).')';

применяешь примерно такой запрос.
.
(\/)____o_O____(\/)
FixleR, структура все же не верная, глянь как теги работают в библиотеке
Всего: 11