Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите с запросом  [new]
MagistrR
Member

Откуда:
Сообщений: 31
Есть таблица с городами и определенными параметрами у этих городов @Cities. И есть справочная таблица городов, но в ней есть города с одинаковыми названиями, находящиеся в разных областях.
Для примера скрипт справочной таблицы:
DECLARE @ExceptCities TABLE (id INT, owner_id INT, CityName NCHAR(100), RegionName NCHAR(100))
DECLARE @Cities TABLE (CityName NCHAR(100), Strs NCHAR(10))
declare @CityNameFrom NCHAR(100)

INSERT INTO @ExceptCities
(id, owner_id, CityName, RegionName)
SELECT 1, 7, 'Советский', 'Кабардино-Балкарская респ.'
UNION ALL SELECT 4, 0, 'Иваново', 'Ивановская обл.'
UNION ALL SELECT 3, 0, 'Октябрьский', 'Казахстан'
UNION ALL SELECT 10, 6, 'Рязань', 'Московская обл.'
UNION ALL SELECT 11, 7, 'Советский', 'Ханты-Мансийский авт. округ-Югра'
UNION ALL SELECT 40, 2, 'Иваново', 'Московская обл.'
UNION ALL SELECT 33, 0, 'Октябрьский', 'Республика Башкортостан'
UNION ALL SELECT 19, 0, 'Рязань', 'Рязанская обл. '
UNION ALL SELECT 77, 0, 'Москва', 'Москва'
UNION ALL SELECT 78, 0, 'Санкт-Петербург', 'Санкт-Петербург'
UNION ALL SELECT 39, 0, 'Смоленск', 'Смоленск'

Из нее нужно получать значения из полей id, owner_id для городов из таблицы table1. При чем для повторяющихся названий городов значения из полей id, owner_id должны быть конкретные, а именно для
Иваново Ивановская обл. 4 0
Рязань Рязанская обл. 19 0
Советский Ханты-Мансийский авт. округ-Югра 11 0
Октябрьский Республика Башкортостан 33 7
а для остальных городов естественно из таблицы @ExceptCities
Переменной @CityNameFrom присваивается значение поля CityName из таблицы @ExceptCities

можно ли получить айдишника как-нибудь вот так
SELECT
CASE WHEN @CityNameFrom = 'Советский'
THEN @ID_CityFrom = c.Id, @ID_Owner_CityFrom = 0
WHEN @CityNameFrom = 'Иваново'
THEN
@ID_CityFrom = c.Id, @ID_Owner_CityFrom = 0
WHEN @CityNameFrom = 'Октябрьский'
THEN
@ID_CityFrom = c.Id, @ID_Owner_CityFrom = 0
WHEN @CityNameFrom = 'Рязань'
THEN
@ID_CityFrom = c.Id, @ID_Owner_CityFrom = 0
ELSE
c.Id, @ID_Owner_CityFrom = c.Owner_Id
END
from Cities c
WHERE c.CityName = @CityNameFrom
Естественно такое работать не будет, но хотелось что-то подобное сделать. Возможно ли это, и если да то как? Может быть есть какие-либо другие возможности.
18 дек 13, 12:30    [15310214]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
MagistrR
Member

Откуда:
Сообщений: 31
Ошибся с тем, что хотелось бы получить. Хотелось бы получить
SELECT
CASE WHEN @CityNameFrom = 'Советский'
THEN @ID_CityFrom = 4, @ID_Owner_CityFrom = 0
WHEN @CityNameFrom = 'Иваново'
THEN
@ID_CityFrom = 33, @ID_Owner_CityFrom = 7
WHEN @CityNameFrom = 'Октябрьский'
THEN
@ID_CityFrom = 19, @ID_Owner_CityFrom = 0
WHEN @CityNameFrom = 'Рязань'
THEN
@ID_CityFrom = 11, @ID_Owner_CityFrom = 0
ELSE
c.Id, @ID_Owner_CityFrom = c.Owner_Id
END
from Cities c
WHERE c.CityName = @CityNameFrom
18 дек 13, 12:52    [15310440]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
aleks2
Guest
Напиши ДВА case, страдалец.
18 дек 13, 12:56    [15310482]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
MagistrR
Member

Откуда:
Сообщений: 31
aleks2,
case для @ID_CityFrom и case для @ID_Owner_CityFrom?
18 дек 13, 13:06    [15310602]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить