SQL+if

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Kirill1983
Обычный пользователь
Обычный пользователь
 
Сообщения: 78
Зарегистрирован: 05.05.2005 (Чт) 11:27

SQL+if

Сообщение Kirill1983 » 16.11.2005 (Ср) 15:07

Добрый вечер.Подскажите,возможно ли реализовать следующую схему на языке SQL:
есть таблицы tab c полями f1 и f2 ,tab2 c полем f3,возможно ли скопировать данные из tab в tab2,с учетом того,что если поле tab.f1=0,то в tab2.f3 копируется tab.f2,а есл tab.f1<>0,то в tab2.f3 копируется tab.f1
т.е. if tab.f1<>0 then в tab2.f3=tab.f1 else tab2.f3=tab.f2
Что то вроде этого:)

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Re: SQL+if

Сообщение Andrey Fedorov » 16.11.2005 (Ср) 15:20

Kirill1983 писал(а):Добрый вечер.Подскажите,возможно ли реализовать следующую схему на языке SQL:
есть таблицы tab c полями f1 и f2 ,tab2 c полем f3,возможно ли скопировать данные из tab в tab2,с учетом того,что если поле tab.f1=0,то в tab2.f3 копируется tab.f2,а есл tab.f1<>0,то в tab2.f3 копируется tab.f1
т.е. if tab.f1<>0 then в tab2.f3=tab.f1 else tab2.f3=tab.f2
Что то вроде этого:)


В TSQL примерно так::

Код: Выделить всё
UPDATE tab2 SET f3=CASE WHEN ISNULL(tab.f1,0)<>0 THEN tab.f1 ELSE tab.f2 END
FROM tab, tab2
WHERE ...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Kirill1983
Обычный пользователь
Обычный пользователь
 
Сообщения: 78
Зарегистрирован: 05.05.2005 (Чт) 11:27

Сообщение Kirill1983 » 16.11.2005 (Ср) 15:45

А если все данные текстовые и сравнивать не с 0,а с пустой строкой?Не подскажешь?

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 16.11.2005 (Ср) 15:49

Kirill1983 писал(а):А если все данные текстовые и сравнивать не с 0,а с пустой строкой?Не подскажешь?


Код: Выделить всё
UPDATE tab2 SET f3=CASE WHEN LEN(ISNULL(tab.f1,''))>0 THEN tab.f1 ELSE tab.f2 END
FROM tab, tab2
WHERE ...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Kirill1983
Обычный пользователь
Обычный пользователь
 
Сообщения: 78
Зарегистрирован: 05.05.2005 (Чт) 11:27

Сообщение Kirill1983 » 16.11.2005 (Ср) 16:18

Выдает "Argument data type ntext is invalid for argument 1 of len funktion" ?

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 16.11.2005 (Ср) 16:23

Kirill1983 писал(а):Выдает "Argument data type ntext is invalid for argument 1 of len funktion" ?


Ну так попробуй:

Код: Выделить всё
UPDATE tab2 SET f3=CASE WHEN NOT tab.f1 IS NULL THEN tab.f1 ELSE tab.f2 END
FROM tab, tab2
WHERE ...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Kirill1983
Обычный пользователь
Обычный пользователь
 
Сообщения: 78
Зарегистрирован: 05.05.2005 (Чт) 11:27

Сообщение Kirill1983 » 16.11.2005 (Ср) 16:44

Запрос проглатывает,записи не добавляет...

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 16.11.2005 (Ср) 17:12

Kirill1983 писал(а):Запрос проглатывает,записи не добавляет...


Вообще-то был приведен пример запроса на обновление, а не на добавление...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Kirill1983
Обычный пользователь
Обычный пользователь
 
Сообщения: 78
Зарегистрирован: 05.05.2005 (Чт) 11:27

Сообщение Kirill1983 » 16.11.2005 (Ср) 17:16

Andrey Fedorov писал(а):
Kirill1983 писал(а):Запрос проглатывает,записи не добавляет...


Вообще-то был приведен пример запроса на обновление, а не на добавление...

Андрей,не подскажете,сильно ли будет разниться запрос на добавление с данным?

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 16.11.2005 (Ср) 17:52

Kirill1983 писал(а):
Andrey Fedorov писал(а):
Kirill1983 писал(а):Запрос проглатывает,записи не добавляет...


Вообще-то был приведен пример запроса на обновление, а не на добавление...

Андрей,не подскажете,сильно ли будет разниться запрос на добавление с данным?


См. Help по INSERT и INSERT INTO.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Kirill1983
Обычный пользователь
Обычный пользователь
 
Сообщения: 78
Зарегистрирован: 05.05.2005 (Чт) 11:27

Сообщение Kirill1983 » 16.11.2005 (Ср) 18:08

Я знаю синтаксис Insert,я не знаю в какую область insert'а вставить SET.....END.
У меня insert:
Код: Выделить всё

INSERT INTO GMP(Text,text2,UID) SELECT ProjectEnterpriseText4,ProjectEnterpriseText3,ENT_ProjectUniqueID FROM MSP_VIEW_PROJ_PROJECTS_ENT"

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 16.11.2005 (Ср) 18:16

тебе CASE твой для нужного поля надо вставлять :lol:

Kirill1983
Обычный пользователь
Обычный пользователь
 
Сообщения: 78
Зарегистрирован: 05.05.2005 (Чт) 11:27

Сообщение Kirill1983 » 16.11.2005 (Ср) 18:45

Konst_One писал(а):тебе CASE твой для нужного поля надо вставлять :lol:

Понимаю :wink: ...вот только локацию выбрать не могу...вставлял GMP(text=case.......выдает ошибку

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 17.11.2005 (Чт) 8:26

Kirill1983 писал(а):
Konst_One писал(а):тебе CASE твой для нужного поля надо вставлять :lol:

Понимаю :wink: ...вот только локацию выбрать не могу...вставлял GMP(text=case.......выдает ошибку


Эх...

Код: Выделить всё
INSERT INTO GMP(Text, UID) SELECT CASE WHEN ProjectEnterpriseText4 IS NULL THEN ProjectEnterpriseText3 ELSE ProjectEnterpriseText4 END, ENT_ProjectUniqueID FROM MSP_VIEW_PROJ_PROJECTS_ENT
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 17.11.2005 (Чт) 13:13

2Andrey Fedorov
все приходится делать самому :wink:
никто учиться не желает :lol:

Kirill1983
Обычный пользователь
Обычный пользователь
 
Сообщения: 78
Зарегистрирован: 05.05.2005 (Чт) 11:27

Сообщение Kirill1983 » 17.11.2005 (Чт) 13:16

Благодарю.Я просто недавно SQL занимаюсь...и учиться желаю :) Спасибо Вам за помощь.


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

    TopList  
cron