Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.004 c
4-9327
Fellomena
2002-01-04 12:29
2002.03.04
RichEdit1.SelAttributes.Color := $000FFF; - есть альтернативы для одного символа в строке ?


6-9253
Alligator
2001-12-18 08:18
2002.03.04
Как создать-убрать сетевой диск вWin2000


1-9233
staratel
2002-02-13 15:29
2002.03.04
web


3-9065
fag2000@ok.ru
2002-02-06 15:18
2002.03.04
как узнать что запись новая


7-9303
vvr
2001-11-27 13:13
2002.03.04
файловая система





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский