Обсчитать кол-во ссылающихся записей на таблицу одним UPDATE-ом

DpoHro

Новичок
Обсчитать кол-во ссылающихся записей на таблицу одним UPDATE-ом

Таблица 1

id, name,..., count

Таблица 2

table1_id, name, ...

Нужно в count таблицы 1 записать кол-во записей ссылающихся из Таблицы 2 по каждой записи табл 1 ессно.

UPDATE Табл1 ????

Чтото не могу сочинить... JOIN в апдейте не сделать, вообще можно ли сделать сие 1 запросом, наверняка можно.
 

Gas

может по одной?
JOIN в апдейте не сделать, вообще можно ли сделать сие 1 запросом
можно сделать и join в update, и одним запросом можно (правда скорость будет не очень, так-как join будет с result set'ом запроса - то-есть без использования индексов. Быстрее будет через temporary table).

Тебе же нужен insert, а не update? В первой таблице данных нет и её нужно наполнить или уже что-то есть и нужно обновить существующие + добавить новые?
 

DpoHro

Новичок
Нет ничего добавлять не нужно, простой апдейт...
У меня заполнялся каталог без поля count я его добавил, теперь мне нужно заполнить это поле у каждой существующей записи таблицы 1

Не вопрос в 2 запроса, но интересно как это делается в 1 запрос?
Чтото я не нашел синтаксиса по JOIN в UPDATE ((

Таблицы впринципе не большие(Таблица 1 - около 1000 записей, Таблица 2 - около 20000), да и функцию эту я буду использовать из админки редко, так что пойдет решение и ресурсоемкое.
 

Gas

может по одной?
Код:
UPDATE table1
JOIN 
  (SELECT COUNT(*) AS cnt, name FROM table2 group by name) AS t 
  ON table1.name = t.name
SET table1.count = table1.count + t.cnt;
http://dev.mysql.com/doc/refman/5.0/en/update.html

UPDATE items,month SET items.price=month.price
WHERE items.id=month.id;

The preceding example shows an inner join that uses the comma operator, but multiple-table UPDATE statements can use any type of join allowed in SELECT statements, such as LEFT JOIN.
 

Gas

может по одной?
DpoHro
но ещё раз предупреждаю, при таком запросе индексы для join'а не будут использоваться (их просто нет на derived query) и я так делать не рекомендую :) (для очистки совести)
 
Сверху