![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите найти ошибку в запросе СРОЧНО [D5, MSSQL]
СергейКнязев © (2002-02-06 11:48:00)update Prices
set price_opt_4=pn.price_opt_4
from Prices p, NewPriceS pn
where p.prodname=pn.prodname
and p.manf_name=pn.manf_name
and p.row=4
На строке с From дает ошибку.
Че не правильно не пойму.
СергейКнязев (2002-02-07 08:05:00) [1]Ладно НАРОД хватит мучиться, я перевожу локальные таблицы на сервер. И изначальный запрос там работает нормально.
СПАСИБО ВСЕМ, КТО ПРИНЯЛ УЧАСТИЕ В РЕШЕНИЕ МОЕЙ ПРОБЛЕМЫ.
P.S. Для Alex-A. Твой запрос проапдейтит все записи и вставит туда максимальное значение из второй таблицы, а это не то, что надо.
Для YaJohn. Osobaya blagodarnost vam za moy slomaniy i zagipsovaniy teper" yazik.
Alex-A (2002-02-07 06:42:00) [2]2СергейКнязев
Попробуй так:
UPDATE Prices
SET price_opt_4=(SELECT MAX(price_opt_4)
FROM NewPrices pn
WHERE pn.prodname=prodname and
pn.manf_name=manf_name
)
WHERE Row=4
не уверен, что это правильно, но проверить сам не имею возможности.
если проверишь - сообщи, pls!
MetallAdm (2002-02-06 18:17:00) [3]Ну Незнаю я Почти такой пример для себя зделал все работает
СергейКнязев (2002-02-06 17:54:00) [4]Объясняю для yaJohn:
У меня в двух локальных таблицах лежат прайс-листы
в PriceS лежат несколько прайсов, в NewPriceS лежит новый прайс с новыми ценами. Надо в таблице PriceS изменить цены на те позиции у которых prodname из PriceS равен prodname из NewPriceS и manf_name аналогично. То есть взять цены из NewPriceS и обновить цены на аналогичный товар из PriceS. На последнюю строку "and row=4" можно не смотреть.
Спасибо за внимание.
yaJohn (2002-02-06 17:18:00) [5]>твой запрос не работает даже в таком виде возвращается много записей на одно поле, которое апдейтится
Nu ya je ne znau, chto u tebia v baze lejit...
update Prices
(select pn.price_opt_4
from Prices p, NewPriceS pn
where p.prodname=pn.prodname
and p.manf_name=pn.manf_name
and p.row=4)
Videlenoe uslovie doljno otbirat" strogo ODNU zapis". Kakuu imenno - zavisit ot logoki programmi...
>Таким образом проапдейтятся ВСЕ значения Price.price_opt_4 одним и тем же значением. если я не прав - поправь pls!
Nu da... A razve ne eto trebovalos"? %)
2 СергейКнязев
Sformuliruyte plzs zadachu pokonkretnee... Chto doljno obnovliatsia i otkuda?
MetallAdm (2002-02-06 16:35:00) [6]а нелзя ли продекларировать переменные запихать в них что нужно
по условию
и апгрейдить тадличку ??
или я что то не так понял ??
СергейКнязев (2002-02-06 16:25:00) [7]Люди я ведь не шучу, очень надо пожалуйста
Alex-A (2002-02-06 15:30:00) [8]2yaJohn:Таким образом проапдейтятся ВСЕ значения Price.price_opt_4 одним и тем же значением.
если я не прав - поправь pls!
СергейКнязев (2002-02-06 15:25:00) [9]yaJohn, твой запрос не работает даже в таком виде возвращается много записей на одно поле, которое апдейтится, а нужно проапдейтить все строки удовлетворяющие заданному условию.
Если не сложно напиши свой агрегат.
Заранее благодарен.
yaJohn (2002-02-06 15:13:00) [10]Perechitay moy otvet.
СергейКнязев (2002-02-06 15:00:00) [11]Ну а как проапдейтить все поля локальной таблички ссылаясь на другую локальную
Alex-A (2002-02-06 14:27:00) [12]Возможно дело в том, что пока таблицы локальные, но для них определен Alias с типом STANDART (парадоксовские таблицы)
Ну тогда, конечно, прав Val!
Этот запрос будет выполняться только на сервере MSSQL!
СергейКнязев (2002-02-06 13:31:00) [13]От диалекта я не отошел в справке по Query Analyzer из MSSQL 7.0 есть такой пример и он написано работает (лажу ведь не подсунут).
Ошибка следующая:
Invalid use of keyword
Token: from
Line Number: 4
Возможно дело в том, что пока таблицы локальные, но для них определен Alias с типом STANDART (парадоксовские таблицы)
AlexSV (2002-02-06 13:18:00) [14]На вскидку: для таблицы под update в from надо указывать имя таблицы без алиаса:
update Prices
set price_opt_4=pn.price_opt_4
from Prices, NewPriceS pn
where Prices.prodname=pn.prodname
and Prices.manf_name=pn.manf_name
and Prices.row=4
Если не поможет, то дай больше информации, желательно на Mail.
Val (2002-02-06 12:57:00) [15]Приношу свои извинения СергейКнязев, все таки очень уж отошли от стандарта в данном диалекте..
Alex-A (2002-02-06 12:25:00) [16]2Val
с точки зрения диалекта Transact-SQL все абсолютно правильно
Alex-A (2002-02-06 12:17:00) [17]Как ошибка-то выглядит?
Синтаксис вроде правильный у меня аналогичный запрос ошибку не возвращает.
Val (2002-02-06 12:03:00) [18]извините, но у вас полная чушь написана или диалект MSSQL очень отличаетмся от стандарта, в чем я сомневаюсь.
врядли есть такая конструкция: update..set...from
обычно делают выборку-select..from и берут из нее данные для update, если не используют явных значений.
yaJohn (2002-02-06 12:02:00) [19]imelos" v vidu:
update Prices
set price_opt_4=
( selectpn.price_opt_4
from Prices p, NewPriceS pn
where p.prodname=pn.prodname
and p.manf_name=pn.manf_name
and p.row=4)
Esli ya ne prav - obiasnite, chto doljno poluchitsia.
Mda, vnutrenniy zapros doljen vozvrashat" strogo odnu zapis". Poetomu luchshe (no ne obiazatel"no) ispol"zovat" agregati.