Форум: "Базы";
Текущий архив: 2002.03.04;
Скачать: [xml.tar.bz2];
ВнизПомогите найти ошибку в запросе СРОЧНО Найти похожие ветки
← →
СергейКнязев (2002-02-06 11:48) [0]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 дает ошибку.
Че не правильно не пойму.
← →
yaJohn (2002-02-06 12:02) [1]imelos" v vidu:
update Prices
set price_opt_4=
( 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)
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.
← →
Val (2002-02-06 12:03) [2]извините, но у вас полная чушь написана или диалект MSSQL очень отличаетмся от стандарта, в чем я сомневаюсь.
врядли есть такая конструкция: update..set...from
обычно делают выборку-select..from и берут из нее данные для update, если не используют явных значений.
← →
Alex-A (2002-02-06 12:17) [3]Как ошибка-то выглядит?
Синтаксис вроде правильный у меня аналогичный запрос ошибку не возвращает.
← →
Alex-A (2002-02-06 12:25) [4]2Val
с точки зрения диалекта Transact-SQL все абсолютно правильно
← →
Val (2002-02-06 12:57) [5]Приношу свои извинения СергейКнязев, все таки очень уж отошли от стандарта в данном диалекте..
← →
AlexSV (2002-02-06 13:18) [6]На вскидку: для таблицы под 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.
← →
СергейКнязев (2002-02-06 13:31) [7]От диалекта я не отошел в справке по Query Analyzer из MSSQL 7.0 есть такой пример и он написано работает (лажу ведь не подсунут).
Ошибка следующая:
Invalid use of keyword
Token: from
Line Number: 4
Возможно дело в том, что пока таблицы локальные, но для них определен Alias с типом STANDART (парадоксовские таблицы)
← →
Alex-A (2002-02-06 14:27) [8]Возможно дело в том, что пока таблицы локальные, но для них определен Alias с типом STANDART (парадоксовские таблицы)
Ну тогда, конечно, прав Val!
Этот запрос будет выполняться только на сервере MSSQL!
← →
СергейКнязев (2002-02-06 15:00) [9]Ну а как проапдейтить все поля локальной таблички ссылаясь на другую локальную
← →
yaJohn (2002-02-06 15:13) [10]Perechitay moy otvet.
← →
СергейКнязев (2002-02-06 15:25) [11]yaJohn, твой запрос не работает даже в таком виде возвращается много записей на одно поле, которое апдейтится, а нужно проапдейтить все строки удовлетворяющие заданному условию.
Если не сложно напиши свой агрегат.
Заранее благодарен.
← →
Alex-A (2002-02-06 15:30) [12]2yaJohn: Таким образом проапдейтятся ВСЕ значения Price.price_opt_4 одним и тем же значением.
если я не прав - поправь pls!
← →
СергейКнязев (2002-02-06 16:25) [13]Люди я ведь не шучу, очень надо пожалуйста
← →
MetallAdm (2002-02-06 16:35) [14]а нелзя ли продекларировать переменные запихать в них что нужно
по условию
и апгрейдить тадличку ??
или я что то не так понял ??
← →
yaJohn (2002-02-06 17:18) [15]>твой запрос не работает даже в таком виде возвращается много записей на одно поле, которое апдейтится
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?
← →
СергейКнязев (2002-02-06 17:54) [16]Объясняю для yaJohn:
У меня в двух локальных таблицах лежат прайс-листы
в PriceS лежат несколько прайсов, в NewPriceS лежит новый прайс с новыми ценами. Надо в таблице PriceS изменить цены на те позиции у которых prodname из PriceS равен prodname из NewPriceS и manf_name аналогично. То есть взять цены из NewPriceS и обновить цены на аналогичный товар из PriceS. На последнюю строку "and row=4" можно не смотреть.
Спасибо за внимание.
← →
MetallAdm (2002-02-06 18:17) [17]Ну Незнаю я Почти такой пример для себя зделал все работает
← →
Alex-A (2002-02-07 06:42) [18]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!
← →
СергейКнязев (2002-02-07 08:05) [19]Ладно НАРОД хватит мучиться, я перевожу локальные таблицы на сервер. И изначальный запрос там работает нормально.
СПАСИБО ВСЕМ, КТО ПРИНЯЛ УЧАСТИЕ В РЕШЕНИЕ МОЕЙ ПРОБЛЕМЫ.
P.S. Для Alex-A. Твой запрос проапдейтит все записи и вставит туда максимальное значение из второй таблицы, а это не то, что надо.
Для YaJohn. Osobaya blagodarnost vam za moy slomaniy i zagipsovaniy teper" yazik.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.03.04;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.005 c