Главная страница
    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.032 c
14-1074854043
}|{yk
2004-01-23 13:34
2004.03.28
Тексейра и Пачеко - компоненты


1-1078334578
Nekto
2004-03-03 20:22
2004.03.28
Глюк у TMainMenu


1-1078733378
able
2004-03-08 11:09
2004.03.28
TRichedit.undo


6-1074157742
Danilin
2004-01-15 12:09
2004.03.28
Определение IP по MAC


1-1078909467
RatLion
2004-03-10 12:04
2004.03.28
Как показать код исполняемый во время выполнения?





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