Всем привет, спасибо за помощь.
Есть table1
uid maxcount 1 0 2 0 3 0 4 0 5 0
И table2
key_id category_id 1 1 1 2 2 4 3 8 4 9
У нас в table1 список айдишников категорий
В table2 список key_id и category_id, которые к ним относятся. К одной key_id может относится много category_id
uid это то же самое, что и category_id
Я создал первой запрос
SELECT `category_id`, COUNT(*) as maxcount FROM `table2` GROUP BY `category_id` HAVING count(*)>1
Получил табличку
category_id maxcount 1 100 2 600 3 750 4 250 5 250
т.е. я типа подсчитал количество key_id для каждой категории
Теперь я хочу обновить вторую табличку при условии, что uid=category_id
Пытаюсь сделать такой запрос
Update `table1`
SET maxcount = (SELECT `category_id`, COUNT(*) as maxcount FROM `table2` GROUP BY `category_id` HAVING count(*)>1)
WHERE `table1.uid` = `table2.category_id`;
Тут он выдает ошибку unknown column table1.uid
- 24.09.2015 23:22
Последний раз редактировалось nado5; 24.09.2015 в 23:37.
- 24.09.2015 23:34
А где вы получаете `table2.category_id` для того, чтобы вставлять в условие where? И еще один момент - я не уверен, что можно записать такой результат запроса в поле maxcount, рам ведь не строку получаете, а несколько значений, причём сразу два поля.
Я бы не стал хранить количество данных из одной таблицы в другой - при любом изменении второй таблицы надо будет обновлять первую. Лучше считайте при необходимости количества, храните в кеше, а при изменении второй таблицы просто обнуляйте кеш. - 24.09.2015 23:48
В общем, мне тут подсказали, надо джоинить. Если кому понадобится:
update table1 t
inner join (SELECT `category_id`, COUNT(*) as maxcount FROM `table2` GROUP BY `category_id` HAVING count(*)>1 )q
on q.category_id =t.uid
set t.maxcount = q.maxcount - 07.10.2015 03:21
Можно же было сделать сложным вложенным select, всегда так делаю. Правда можно запутаться.
Тэги топика:
Похожие темы
Темы | Раздел | Ответов | Последний пост |
---|---|---|---|
Помогите составить условие | Web программирование | 2 | 09.05.2014 13:44 |
Помогите составить правельный роботс тхт для dle | Вопросы от новичков | 7 | 24.07.2012 23:23 |
Помогите составить ТЗ для копираайтера | Вопросы от новичков | 1 | 22.02.2012 21:01 |
Помогите составить robots.txt | Вопросы от новичков | 4 | 09.11.2011 18:07 |
Помогите составить ТЗ | Прочее | 0 | 04.04.2011 19:41 |