Форум программистов, компьютерный форум, киберфорум
Наши страницы
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.59/22: Рейтинг темы: голосов - 22, средняя оценка - 4.59
SValera
1 / 1 / 0
Регистрация: 03.06.2009
Сообщений: 56
1

Изменить записи одного поля относительно записей в другом

30.06.2009, 11:11. Просмотров 4025. Ответов 22
Метки нет (Все метки)

Помогите кто может. В Аксе это делалось просто с помощью оператора IIF(<параметры>;Да;Нет). В Скуле аналогичного оператора я не знаю, пробовал сделать по теме "Вычисление поля по условию показывает ошибку.
T-SQL
1
2
SELECT     ObjectID, TempCode, N6, [311], case [N6] when 60 then cast [311]=0 end as [311]
FROM         Rasch44
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.06.2009, 11:11
Ответы с готовыми решениями:

Вывод количества полей одного поля для другого поля этой же таблицы
Здравствуйте! Есть таблица Statement, в которой есть два поля: StatementNumber...

Перенос из одного поля в другое
День добрый.. Подскажите пожалуйста как правильно перенести данные из одного...

Поиск одного поля в другом
Всем привет, имеется таблица. В ней есть поля: name, fio, pin Есть еще одна...

Вычисление одного поля на форме относительно другого
Доброго времени суток. Прошу Вас помочь с формой на которой есть вичисляемое...

Проверка содержание одного поля в другом
Здравствуйте. Я не знаю как правильно сформулировать вопрос, поэтому поиском не...

22
БурундукЪ
9557 / 2560 / 83
Регистрация: 17.02.2009
Сообщений: 10,364
30.06.2009, 11:14 2
Цитата Сообщение от SValera Посмотреть сообщение
CAST [311]=0
это чо за бред?

Добавлено через 1 минуту 4 секунды
Цитата Сообщение от SValera Посмотреть сообщение
[311], CASE [N6] WHEN 60 THEN CAST [311]=0 END AS [311
и это тож?...
0
SValera
1 / 1 / 0
Регистрация: 03.06.2009
Сообщений: 56
30.06.2009, 11:24  [ТС] 3
Если в поле N6 запись = 60, то в поле 311 ставиться 0, а иначе остается прежнее значение
0
БурундукЪ
9557 / 2560 / 83
Регистрация: 17.02.2009
Сообщений: 10,364
30.06.2009, 11:29 4
SValera, тогда надо не SELECТ использовать, а Update )))

Добавлено через 43 секунды
или ясней выражайте свою мысль, бо нифигаж непонятно
0
SValera
1 / 1 / 0
Регистрация: 03.06.2009
Сообщений: 56
30.06.2009, 11:35  [ТС] 5
В поле N6 имеется множество записей среди них есть с кодом 60, а в поле 311 имеются данные. Мне надо сделать так, чтобы при выполнении запроса при значении кода в поле N6 = 60 в в поле 311 проставлялся 0 (ноль), а в остальных случаях значение оставалось прежним. А как этого добиться в Скуле я не знаю.
0
БурундукЪ
9557 / 2560 / 83
Регистрация: 17.02.2009
Сообщений: 10,364
30.06.2009, 11:41 6
T-SQL
1
update Rasch44 set [311]=0 where N6 = 60
Добавлено через 33 секунды
это в процедурах, не в запросах
0
SValera
1 / 1 / 0
Регистрация: 03.06.2009
Сообщений: 56
30.06.2009, 11:43  [ТС] 7
То есть в запросе это работать не будет??
0
БурундукЪ
9557 / 2560 / 83
Регистрация: 17.02.2009
Сообщений: 10,364
30.06.2009, 11:45 8
нет.
только в процедурах
0
SValera
1 / 1 / 0
Регистрация: 03.06.2009
Сообщений: 56
30.06.2009, 11:48  [ТС] 9
Это очень- очень - очень плохо. Надо искать другой путь.
0
БурундукЪ
9557 / 2560 / 83
Регистрация: 17.02.2009
Сообщений: 10,364
30.06.2009, 11:52 10
а в чем проблема использования процедур?
и какой клиентский модуль вы используете для обработки данных SQL Server"а?

Добавлено через 1 минуту 3 секунды
потому как другого пути в этом случае нет
в скул-серверных запросах используется только SELECТ
0
SValera
1 / 1 / 0
Регистрация: 03.06.2009
Сообщений: 56
30.06.2009, 12:03  [ТС] 11
1. Я не знаю что такое процедура и поэтому не разу ей не пользовался.
2. Я не знаю что такое клиентский модуль, я просто пользователь БД.
3. Я пишу вьюсы к таблицам, формируя таким образом мне необходимую БД, которую в последствии если опять же удастся перевести в Аксес буду эксплуатировать.

Добавлено через 3 минуты 15 секунд
Я смотрел справочник MySQL там описывается возможность использовать оператор IF, правда описано это как то загадочно - в одной строке исполнения.

Добавлено через 4 минуты 18 секунд
В теме "Вычисление полей по условию" на этом же форуме, аналогичная задача, я по ней и делал первый запрос.
0
БурундукЪ
9557 / 2560 / 83
Регистрация: 17.02.2009
Сообщений: 10,364
30.06.2009, 12:07 12
1. процедура (Procedure) оч похожа на запрос (View), но у нее больше возможностей.
2,3. клиентский модуль, это модуль который обрабатывает базу СКуЛ-Сервера. В качестве клиентского модуля можно использовать обработчик, написанный в Акцессе, только файл не mdb , а adp (т.е. проект акцесса)

оператор IF есть и в Скул-сервере, опять же в процах, но не во вьюсах
и он используется аналогично использованию в ВБА.
0
SValera
1 / 1 / 0
Регистрация: 03.06.2009
Сообщений: 56
30.06.2009, 12:18  [ТС] 13
2 и 3 это не для меня здесь я -профан.
Вьюсы в основном я и пишу. Но они у меня полностью похожи на запросы. Более сложные наверное не осилю. Хотя если это возможно надо пробовать.
0
БурундукЪ
9557 / 2560 / 83
Регистрация: 17.02.2009
Сообщений: 10,364
30.06.2009, 12:32 14
Цитата Сообщение от SValera Посмотреть сообщение
2 и 3 это не для меня здесь я -профан.
книжки почитай, хотя бы здесь глянь http://www.kodges.ru/komp/database/
там нет ничего особо сложного
Цитата Сообщение от SValera Посмотреть сообщение
Вьюсы в основном я и пишу. Но они у меня полностью похожи на запросы. Более сложные наверное не осилю. Хотя если это возможно надо пробовать.
там нет ничего особо сложного, если по началу писать простые запросы, типа апдейтов или удаления
0
SValera
1 / 1 / 0
Регистрация: 03.06.2009
Сообщений: 56
30.06.2009, 13:37  [ТС] 15
В запросе я сделал это так:
T-SQL
1
CASE WHEN [N6] = 60 THEN 0 ELSE [311] END AS [312]
0
БурундукЪ
9557 / 2560 / 83
Регистрация: 17.02.2009
Сообщений: 10,364
30.06.2009, 13:39 16
Цитата Сообщение от SValera Посмотреть сообщение
В запросе я сделал это так:
T-SQL
1
CASE WHEN [N6] = 60 THEN 0 ELSE [311] END AS [312]
но это же не обновление, а просто выборка О_о?
0
SValera
1 / 1 / 0
Регистрация: 03.06.2009
Сообщений: 56
30.06.2009, 14:15  [ТС] 17
А в чем разница? Поле 312 обновилось. А в окончательном итоге можно заменить 312 на 311 и все нормально.
0
БурундукЪ
9557 / 2560 / 83
Регистрация: 17.02.2009
Сообщений: 10,364
30.06.2009, 14:44 18
SValera, можно весь запрос глянуть
0
SValera
1 / 1 / 0
Регистрация: 03.06.2009
Сообщений: 56
30.06.2009, 15:13  [ТС] 19
Конечно. Правда я убрал кучу полей по котором шло обнуление (заменялся NULL на 0).
T-SQL
1
2
SELECT  ObjectID, TempCode, T1, Number, N6, ExpansionType4, ISNULL([305], 0) AS [305], ISNULL((CASE WHEN [N6] = 60 THEN 0 ELSE [311] END), 0) AS [311] 
FROM  dbo.OBEDIN44
Правда это вьюс
0
БурундукЪ
9557 / 2560 / 83
Регистрация: 17.02.2009
Сообщений: 10,364
30.06.2009, 15:27 20
SValera, этот вьюс обновляет данные
0
30.06.2009, 15:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.06.2009, 15:27

Как вывести данные из одного текст-поля в другом?
Как вывести данные из одного текст-поля в другом? Допустим, что есть два...

Скрипт поиска слова из одного текстового поля в другом
Доброго времени суток, помогите пожалуйста, нужно написать скрипт который будет...

Объединение записей одного поля
Здравствуйте! Подскажите пожалуйстя, как объеденить в запросе текстовые данные...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru