INSERT INTO tags (phrase) VALUES
('first'),
('second'),
('third')
Нужно получить значения автоинкрементного поля для всех этих записей. Варианты:
a) заново искать эти значения в базе
SELECT tag_id FROM tags WHERE phrase IN ('first', 'second', 'third')
b) упорядочить по tag_id и выбрать первые записи
SELECT tag_id FROM tags ORDER BY tag_id DESC LIMIT 3
с) вставлять записи отдельными insert'ами и смотреть last_insert_id каждый раз
Как лучше сделать?
И ещё вопрос. Запрос для построения облака получается каким-то громоздким:
SELECT
tags.phrase,
COUNT(tags_entities.tag_id) AS num
FROM tags_entities
LEFT JOIN tags ON tags_entities.tag_id=tags.tag_id
GROUP BY tags.tag_id
ORDER BY num DESC
LIMIT 10
Может стоит сделать в таблице тегов дополнительное поле [tt]tags_count[/tt] и обновлять его при изменении таблицы связей (вроде, это называется "денормализация")?