Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.03.04;
Скачать: CL | DM;

Вниз

Помогите найти ошибку в запросе СРОЧНО   Найти похожие ветки 

 
СергейКнязев   (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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.008 c
1-9105
AlanB
2002-02-15 10:36
2002.03.04
Мастера помоте новичку.....


7-9318
DenKop
2001-11-26 21:20
2002.03.04
Рабочий стол.


1-9166
VSoft
2002-02-14 07:49
2002.03.04
Кол-во файлов и их имена в определенном каталоге


1-9239
Андре
2002-02-15 19:22
2002.03.04
The Bat !


1-9234
Beer
2002-02-15 10:50
2002.03.04
Получить название директории...