С Новым годом! Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/30: Рейтинг темы: голосов - 30, средняя оценка - 4.67
Банальное исключение
 Аватар для WorldException
127 / 95 / 12
Регистрация: 31.03.2010
Сообщений: 314
Записей в блоге: 1

Transact-SQL (IF ELSE)

05.02.2012, 12:37. Показов 5614. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую. Есть запрос, который выводит информацию о заказах (Тема: Таскопарк). Мне нужно, чтобы он проверял, яляется ли клиент VIP'ом, и если да, то уменьшал цену поездки вдвое.
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Create PROCEDURE [dbo].[GetOrderInfo]
AS
SELECT 
    OrderCost.OrderType,
    OrderCost.Cost,
    Model AS Marka_avtomobilya,
    Type AS Tip_avtomobilya,
    LengthRun+' km' AS Dlina_Puti,
    Cena=([Order].LengthRun*OrderCost.Cost),
    Manager.Family+' '+LEFT(Manager.Name,1)+'.'+LEFT(Manager.FatherName,1)+'.' AS Oformil,
    Client.ForName+' '+LEFT(Client.Name,1)+'.'+LEFT(Client.FatherName,1)+'.' AS Client,
    Client.VIP,
    ExecOrder
FROM [Order],Manager,Auto,Client,OrderCost
WHERE
[Order].ManagerID=Manager.ManagerID AND
[Order].AutoID=Auto.AutoID AND
[Order].OrderCostID=OrderCost.OrderCostID AND
[Order].ClientID=Client.ClientID
Не понимаю как с IF работать и в последствие занести полученные данные в столбец.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.02.2012, 12:37
Ответы с готовыми решениями:

@ в transact-sql
Для чего используется @ в Transact-SQL?

вопрос по transact sql
можно ли при выборке селектом на месте перечисления необходимых столбцов указывать подзапросы? и какой у этого дела синтаксис? не...

Подскажите по Transact-SQL
Подскажите пожалуйста! Задача:Найти подразделение в котором работал "Имя сотрудника" такого то числа(10.03.2009) Что сделал: ...

8
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
05.02.2012, 13:49
Лучше всего
T-SQL
1
2
3
4
create trigger if_vip on [dbo].[order]
after insert
as
.....
http://msdn.microsoft.com/ru-r... 89799.aspx
1
Банальное исключение
 Аватар для WorldException
127 / 95 / 12
Регистрация: 31.03.2010
Сообщений: 314
Записей в блоге: 1
05.02.2012, 14:19  [ТС]
pincet
T-SQL
1
2
3
4
5
6
7
8
CREATE TRIGGER if_vip ON [Order]
AFTER INSERT,UPDATE
AS
IF 'Что тут написать?'
BEGIN
INSERT INTO OrderCost (Cost)
VALUES ('И что написать здесь, чтобы значение было Cost/2')
END
0
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
05.02.2012, 14:23
потерпи 5 сек - щас некогда ответить - чуть пожже
0
Банальное исключение
 Аватар для WorldException
127 / 95 / 12
Регистрация: 31.03.2010
Сообщений: 314
Записей в блоге: 1
05.02.2012, 14:25  [ТС]
Поясню немного:
Мне нужно, чтоб для вип-клиентов была 50% скидка на поездку.
Поле VIP (VARCHAR(5): 'Да' или 'Нет')

Добавлено через 33 секунды
В OrderCost есть ClientID
0
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
05.02.2012, 15:59
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
-- use MyDataBase - здесь указываем имя ДБ
GO -- необходимо для CREATE TRIGGER
CREATE TRIGGER if_vip  ON  Table_1 -- Вместо Table_1 - везде имя свое талбицы
   AFTER  INSERT
AS 
BEGIN
declare @rcnt int
set @rcnt=@@ROWCOUNT
if @rcnt=0 return -- ограничения целостности могут не вставить ничего
if @rcnt>1 -- версия для обновления только одной записи
    begin
        rollback
        return
    end
if (select [name] from inserted)='VIP' -- вместо 'VIP' - что угодно
begin
    update Table_1 set Table_1.cost=inserted.cost/2 -- здесь манипулируем значением
        from inserted where Table_1.id=inserted.id
 
end
SET NOCOUNT ON; -- как правило, триггеры не возвращают значений
 
END
GO
Добавлено через 4 минуты
Я бы еще с INSTEAD OF INSERT побаловался - думаю, это более айс.

Добавлено через 10 минут
Цитата Сообщение от WorldException Посмотреть сообщение
Приветствую. Есть запрос, который выводит информацию о заказах (Тема: Таскопарк). Мне нужно, чтобы он проверял, яляется ли клиент VIP'ом, и если да, то уменьшал цену поездки вдвое.
Если нужно только в отчете - то можно так
T-SQL
1
2
3
4
5
6
7
8
use MyDb
go
select * ,
    case when [name]='VIP' then cost/2
        else cost
    end as cost
from Table_1
go
2
Банальное исключение
 Аватар для WorldException
127 / 95 / 12
Регистрация: 31.03.2010
Сообщений: 314
Записей в блоге: 1
06.02.2012, 08:01  [ТС]
pincet, благодарю.
0
10.02.2012, 21:48

Не по теме:

Цитата Сообщение от WorldException Посмотреть сообщение
Поле VIP (VARCHAR(5): 'Да' или 'Нет')
Да - 2 буквы
Нет - 3 буквы
Почему тогда VIP VARCHAR(5)?
И почему не используется тип бит?

1
Банальное исключение
 Аватар для WorldException
127 / 95 / 12
Регистрация: 31.03.2010
Сообщений: 314
Записей в блоге: 1
13.02.2012, 07:15  [ТС]
nio, Всё делалось "на скорую руку" и о таких подробностях не задумывался. Спасибо за заметку, учту.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.02.2012, 07:15
Помогаю со студенческими работами здесь

Запрос в transact-sql
Здравствуйте! Допустим есть таблица со столбцами "Имя", "Пункт" и "Значение". Как вывести все имена, где, допустим, Пункт 1 имеет...

SQL Server Transact-SQL
Задача Вывести имена поставщиков , для которых в таблице Заказ содержится не менее 5 строк. При расчете не учитывать заказы, в которых...

Transact SQL. Хранимые процедуры
Есть БД - Dar, в ней 5 таблиц - dbo.City, dbo.Customer, dbo.OrdItem, dbo.Product, dbo.Order В таблице dbo.Customer - столбцы FName,...

Программирование на языке Transact-SQL
Есть хранимая процедура которая решает задачу определения наименования товара, по которому был наибольший или наименьший спрос за последние...

Создать запрос на Transact-SQL
Есть вот такой запрос и после его выполнения получается такая таблица, далее нужно как-то сделать так чтобы в тех строках где Id_Master...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru