Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / SQLite [игнор отключен] [закрыт для гостей] / UPDATE с подзапросом / 6 сообщений из 6, страница 1 из 1
23.04.2010, 20:05
    #36595760
grio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UPDATE с подзапросом
Подскажите как сформировать запрос,
общая идея такая:

Код: plaintext
1.
UPDATE goods SET  goods.PriceIn = (goods.PriceIn + invoice_content.Price) /  2  
WHERE  goods.UID IN (SELECT Goods FROM invoice_content WHERE Invoice =  '1' )

На синтаксис, конечно ругается. Мне не представляется возможным использовать множество подзапросов SELECT в формуле расчета. Т.к. в этом примере я нарочно упростил формулу для наглядности.
Попробовал переписать запрос таким образом:
Код: plaintext
1.
SELECT (UPDATE goods SET PriceIn = (PriceIn + invoice_content.Price) /  2  WHERE UID = invoice_content.Goods) 
FROM invoice_content WHERE Invoice =  '1'
Тоже не удачно, т.к. оказалось, что UPDATE нельзя использовать в качестве подзапроса.
Подскажите как правильно решать подобные задачи?

br,
grio.
...
Рейтинг: 0 / 0
23.04.2010, 20:15
    #36595767
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UPDATE с подзапросом
Код: plaintext
1.
2.
update t1 set t1.f1 = t2.f1
from t2
where t1.pk=t2.pk and t1.f2='aaa'
...
Рейтинг: 0 / 0
23.04.2010, 22:16
    #36595836
grio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UPDATE с подзапросом
White Owl, к сожалению, в синтаксисе команды UPDATE нет понятия FROM
...
Рейтинг: 0 / 0
23.04.2010, 23:56
    #36595929
АнатоЛой
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UPDATE с подзапросом
grio,
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
UPDATE goods 
  SET PriceIn = PriceIn/ 2  + 
     (SELECT ic1.Price /  2  
         FROM invoice_content ic1
           WHERE ic1 = ?
     )

    WHERE  UID IN (
       SELECT ic2.Goods 
          FROM invoice_content ic2 
             WHERE ic2.Invoice =  '1' 
    )
...
Рейтинг: 0 / 0
25.04.2010, 00:33
    #36596590
sotinov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UPDATE с подзапросом
Возможно получится так
Код: plaintext
1.
2.
3.
4.
5.
6.
replace into goods(uid, pricein)
SELECT uid, goods.PriceIn + invoice_content.Price as pricein
FROM
  goods g
  join invoice_content i on.uid = g.uid
WHERE i.invoice =  '1'
http://sqlite.org/lang_conflict.html
...
Рейтинг: 0 / 0
04.05.2010, 13:46
    #36610938
grio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UPDATE с подзапросом
sotinov,

Спасибо за идею. REPLACE с подзапросом прекрасно работает.
...
Рейтинг: 0 / 0
Форумы / SQLite [игнор отключен] [закрыт для гостей] / UPDATE с подзапросом / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]