Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];

Вниз

Опять избавление от вложенного запроса. На этот раз внутри UPDATE   Найти похожие ветки 

 
VictorT ©   (2004-02-18 16:24) [0]

Нужно переформулировать такой запрос:
update firm_ref set sourceid=13 where firm_ref.regnum in (select distinct exhibitionfirms.regnum from exhibitionfirms)


 
Guest   (2004-02-18 16:27) [1]

1. Менять СУБД.
2. Курсор по select distinct regnum from exhibitionfirms
с выполнением внутри него update firm_ref set sourceid=13 where regnum=?


 
asp ©   (2004-02-18 16:27) [2]

Переформулируй на EXISTS...


 
Guest   (2004-02-18 16:29) [3]

[2] asp ©   (18.02.04 16:27)

MySQL и Exists не поддерживает IIRC.


 
VictorT ©   (2004-02-18 16:32) [4]


> 1. Менять СУБД.

Нет возможности.

> 2. Курсор по select distinct regnum from exhibitionfirms
> с выполнением внутри него update firm_ref set sourceid=13
> where regnum=?

Так и собирался сделать в случае, если не найду лучшего решения.

К примеру запрос:
delete from table1
where field1 in (select field1 from table2)

удалось заменить на:
delete table1 from table1, table2 where table1.field1 = table2.field1

Может нечто подобное можно и для UPDATE...


 
Guest   (2004-02-18 16:33) [5]

update table1 from table1, table2 set field2=13 where table1.field1 = table2.field1?


 
Val ©   (2004-02-18 16:40) [6]

>Guest   (18.02.04 16:33) [5]
такой синтаксис проходит в MySQL?
>VictorT ©   (18.02.04 16:32) [4]
Не вижу смысла, честно говоря...


 
Guest   (2004-02-18 16:41) [7]

[6] Val ©   (18.02.04 16:40)

Откуда я знаю? :)
Я просто предположил, что он мог бы быть таким. По аналогии.


 
Johnmen ©   (2004-02-18 16:48) [8]

Ну ясен пень, в доку по майэскуэльному SQL синтаксису глянуть лень...:(


 
VictorT ©   (2004-02-18 16:52) [9]


> Guest   (18.02.04 16:33) [5]

Не проканывает.

> такой синтаксис проходит в MySQL?

С UPDATE не прошёл, а тот, что я привёл с DELETE, проходит. Кстати, я вообще не видел такого синтаксиса ни в SQL вообще (языка), ни в описании MySQL в частности. Сам удивился, когда мне предложили так попробовать с DELETE, но оказалось, работает.


 
VictorT ©   (2004-02-18 16:57) [10]


> Ну ясен пень, в доку по майэскуэльному SQL синтаксису глянуть
> лень...:(

В том то и дело, не описано там такого...
Вот к примеру описание DELETE:

DELETE FROM table_name WHERE where_definition

Здесь where_definition имеет формат:

where_definition:
 where_expr or where_expr [AND | OR] where_expr

where_expr имеет формат:

where_expr:
 column_name [> | >= | = | <> | <= | < ]
 column_name_or_constant or
 column_name LIKE column_name_or_constant or
 column_name IS NULL or column_name IS NOT NULL or (where_definition)


и при этом проканывает такой запрос:
delete table1 from table1, table2 where table1.field1 = table2.field1
хотя он и не стыкуется с описанием.

Подумал, мож и с UPDATE есть что-то недокументированное...
Вот его описание:

UPDATE table SET column=expression,... WHERE where_definition

Здесь where_definition:

where_definition:
 where_expr or where_expr [AND | OR] where_expr

Здесь where where_expr имеет формат:

where_expr:
 column_name [> | >= | = | <> | <= | < ]
 column_name_or_constant or
 column_name LIKE column_name_or_constant or
 column_name IS NULL or column_name IS NOT NULL or (where_definition)


 
VictorT ©   (2004-02-18 17:01) [11]


> Не вижу смысла, честно говоря...

Не видишь смысла в чём?


 
Johnmen ©   (2004-02-18 17:05) [12]

Врешь ты всё... В Описании всё четко описано...
http://soft.org.ua/docs/mysql/ru/UPDATE.html


 
VictorT ©   (2004-02-18 17:14) [13]


> Johnmen ©   (18.02.04 17:05) [12]

B где там решение моей проблемы?


 
Johnmen ©   (2004-02-18 17:19) [14]

>VictorT ©   (18.02.04 17:14) [13]

Хм... Там и делете такое [4] упомянут, и про апдейт исчерпывающе написано...:)


 
VictorT ©   (2004-02-18 17:32) [15]


> Там и делете такое [4] упомянут,

хм... действительно... а в моём мануале этого нет...

> и про апдейт исчерпывающе написано

То же, что и в моём мануале. Если действительно исчерпывающе (ничего не упущено), то наверно придётся всё-таки делать апдейт в цикле :(


 
Val ©   (2004-02-18 17:36) [16]

>VictorT ©   (18.02.04 17:01) [11]
в попытке избавиться от вложенного запроса в данном случае.


 
VictorT ©   (2004-02-18 17:49) [17]


> в попытке избавиться от вложенного запроса в данном случае.

Дак я бы и не избавлялся, если бы это работало. Но в MySQL со вложенным не проходит.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.03 c
4-1074410194
max003
2004-01-18 10:16
2004.03.28
Как изменить свойство enabled элемента чужой программы


3-1077899432
LAndreyV
2004-02-27 19:30
2004.03.28
Нужна библиотека для работы в DBase IV


3-1077004965
smolin
2004-02-17 11:02
2004.03.28
select summa, schet into ( C: table1.dbf ) from table_


1-1078422320
white
2004-03-04 20:45
2004.03.28
Форма


1-1079025693
Василий Петрович
2004-03-11 20:21
2004.03.28
DelimitedText





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский