Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> update = select 
:(
    Опции темы
Loki
Дата 4.8.2013, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 244
Регистрация: 9.7.2006

Репутация: нет
Всего: нет



Как правильно сделать апдейт по квери?
Код

postgres=# update tab set (quant,area) = (count(*),area) from tabm group by area order by area;                                                      
ERROR:  syntax error at or near "group"
LINE 1: ...pdate tab set (quant,area) = (1,area) from tabm group by a...

Нужно все значения из селекта обновить в другой таблице, 2 столбца.
PM MAIL   Вверх
Akina
Дата 4.8.2013, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 3
Всего: 453



Код

update tab, (select count(*) cnt, area from tabm group by area) q 
set tab.quant = q.cnt
where tab.area = q.area
?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Zloxa
Дата 5.8.2013, 03:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3470
Регистрация: 12.9.2008

Репутация: 3
Всего: 161



Akinasmile update syntax

полагаю ###код от ТС имел за собой ввиду
Код

update tab set tab.quant = s.cnt
from (select area,count(*) cnt from tabm group by area ) s
where tab.area = s.area



--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Loki
Дата 6.8.2013, 07:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 244
Регистрация: 9.7.2006

Репутация: нет
Всего: нет



Что-то я не совсем понимаю почему where, мне нужно вывод вот такого запроса
Код

select count(*),area from tabm group by area order by area;

поместить с update вот в такую таблицу
Код

CREATE TABLE tab (
    area            varchar(64) default '',
    quant        integer DEFAULT 0
);

т.е. каждую строку вывода select поместить в таблицу tab
Но у меня работает простой update:
Код

update tab set (area,quant) = ('aaa',122);


Да, если мне нужно сделать insert or update. Для этого придется процедуру писать?

Это сообщение отредактировал(а) Loki - 6.8.2013, 08:06
PM MAIL   Вверх
Zloxa
Дата 6.8.2013, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3470
Регистрация: 12.9.2008

Репутация: 3
Всего: 161



Цитата(Loki @  6.8.2013,  08:55 Найти цитируемый пост)
 почему where

потому что, вероятно, вам надо одну строку строку таблицы сопоставить с одной строкой результата запроса. Так ведь? Нет? Если нет, я даже пердставить себе не могу что же вы хотите всамделе.


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Loki
Дата 7.8.2013, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 244
Регистрация: 9.7.2006

Репутация: нет
Всего: нет



ну select вернет n-строк, мне нужно эти n-строк обновить, а не определенную по where.
или я так не смогу сделать?

Ну и вопрос по insert or update еще открыт.
PM MAIL   Вверх
Akina
Дата 7.8.2013, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 3
Всего: 453



Цитата(Loki @  7.8.2013,  15:40 Найти цитируемый пост)
ну select вернет n-строк, мне нужно эти n-строк обновить, а не определенную по where.

WHERE именно для того и нужен, чтобы были обновлены именно эти N записей.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Loki
Дата 7.8.2013, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 244
Регистрация: 9.7.2006

Репутация: нет
Всего: нет



зачем update where? он ведь и так обновляет только то что есть, where сравникает если есть.

а как быть "обновлением" тех чего еще нет?
PM MAIL   Вверх
Akina
Дата 7.8.2013, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 3
Всего: 453



Loki, у меня предложение.

Или Вы перестаёте задавать идиотские вопросы и начинаете учить SQL - по книжке там, по мануалу или ещё как... или просто перестаёте задавать идиотские вопросы и делаете так, как Вам говорят, без понимания происходящего.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PostgreSQL | Следующая тема »


 




[ Время генерации скрипта: 0.3054 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.