Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
29 / 29 / 19
Регистрация: 18.11.2012
Сообщений: 338
Записей в блоге: 1

Выбрать таблицу в зависимости от значения поля

09.10.2014, 14:20. Показов 2436. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
такая проблема: надо написать запрос, который будет в соответствии с значением поля брать определенную таблицу.
то есть если код валюты=0, берем m12b иначе m12r. Это должно быть в одном запросе. Через case не получилось=\
Хэлп плз
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.10.2014, 14:20
Ответы с готовыми решениями:

Выбрать значение столбца в зависимости от его значения
Извиняюсь за тавтологию в заголовке, ну да ладно. Условно говоря, есть у меня такой кортеж: Преподаватель, Предмет, Группа, Поток Как...

Выбрать записи, у которых ВСЕ значения другого поля одинаковые
В общем, искомый результат работы запроса, это запись "6631", т.к. в поле "Оценка" имеются всего 3 записи и все три записи одинаковые (это...

Выбрать список в зависимости от значения поля
Я только начинающий так что вопрос соответствующий. Есть форма с полем и списком. Значения для списка берется из таблицы с 2-мя...

10
 Аватар для nixon93nixon
63 / 63 / 21
Регистрация: 08.02.2013
Сообщений: 262
09.10.2014, 15:18
SQL
1
2
3
4
IF @kod_val = 0
SELECT * FROM m12b
ELSE
SELECT * FROM m12r

если нужен один SELECT, то опишите подробнее структуру БД и что вы хотите получить
0
29 / 29 / 19
Регистрация: 18.11.2012
Сообщений: 338
Записей в блоге: 1
09.10.2014, 15:42  [ТС]
nixon93nixon, мне при этом надо вывести данные с таблицы откуда берется @kod_val , допустим t1, и связав по уникальному полю, id, вывести это. Например: 1ая строка в таблице t1,
идет поставщик с кодом вал.=0 выводим 1ую строку и данные с m12b, 2ая строка в таблице t1 к.вал.=1 выводим 2ую строку и данные с таблицы m12r
0
 Аватар для nixon93nixon
63 / 63 / 21
Регистрация: 08.02.2013
Сообщений: 262
09.10.2014, 15:58
не до конца понял, но если нужно именно в одном запросе, вроде case поможет все-таки

SQL
1
2
3
4
5
6
7
8
9
SELECT 
t1.kod_val,
CASE t1.kod_Val
WHEN 0 THEN m12b.field1
ELSE m12r.field1
END AS field1
FROM t1
LEFT JOIN m12b ON m12b.id = t1.id
LEFT JOIN m12r ON m12r.id = t1.id
можно в с помощьюе CTE сделать, если требование "в одном запросе" не важно
0
29 / 29 / 19
Регистрация: 18.11.2012
Сообщений: 338
Записей в блоге: 1
09.10.2014, 16:52  [ТС]
nixon93nixon, да, хотел так, но чтобы отображались не слева, а снизу, по типу как через union
0
 Аватар для nixon93nixon
63 / 63 / 21
Регистрация: 08.02.2013
Сообщений: 262
09.10.2014, 17:05
ну чтобы "велосипед" не придумывать, CTE самый лучший вариант

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
SELECT 
WITH m12b_CTE(kod_val, field1)
AS
(
t1.kod_val,
m12b.field1
FROM t1
INNER JOIN m12b ON m12b.id = t1.id AND t1.kod_val = 0
)
 
WITH m12r_CTE(kod_val, field1)
AS
(
t1.kod_val,
m12r.field1
FROM t1
INNER JOIN m12r ON m12r.id = t1.id AND t1.kod_val <> 0
)
 
SELECT * FROM m12r_CTE
UNION ALL
SELECT * FROM m12b_CTE
0
29 / 29 / 19
Регистрация: 18.11.2012
Сообщений: 338
Записей в блоге: 1
09.10.2014, 17:17  [ТС]
nixon93nixon, это все 1 запрос?
0
 Аватар для nixon93nixon
63 / 63 / 21
Регистрация: 08.02.2013
Сообщений: 262
09.10.2014, 17:26
ну, как сказать, результирующий один

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
WITH m12b_CTE(kod_val, field1)
AS
(
t1.kod_val,
m12b.field1
FROM t1
INNER JOIN m12b ON m12b.id = t1.id AND t1.kod_val = 0
)
 
WITH m12r_CTE(kod_val, field1)
AS
(
t1.kod_val,
m12r.field1
FROM t1
INNER JOIN m12r ON m12r.id = t1.id AND t1.kod_val <> 0
)
 
SELECT * FROM m12r_CTE
UNION ALL
SELECT * FROM m12b_CTE
можно еще вложенные сделать, но суть та же
0
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,272
09.10.2014, 21:31
Цитата Сообщение от nixon93nixon Посмотреть сообщение
ну, как сказать, результирующий один

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
WITH m12b_CTE(kod_val, field1)
AS
(
t1.kod_val,
m12b.field1
FROM t1
INNER JOIN m12b ON m12b.id = t1.id AND t1.kod_val = 0
)
 
WITH m12r_CTE(kod_val, field1)
AS
(
t1.kod_val,
m12r.field1
FROM t1
INNER JOIN m12r ON m12r.id = t1.id AND t1.kod_val <> 0
)
 
SELECT * FROM m12r_CTE
UNION ALL
SELECT * FROM m12b_CTE
можно еще вложенные сделать, но суть та же
Неплохо было бы сначала синтаксис посмотреть...
Замените второй WITH на запятую.

Но сама задача противоречит сути SQL.
Почему нельзя держать и рубли и баки и всё, что ещё понадобится,
в одной таблице с дополнительным полем с кодом валюты?
Если понадобятся 100 валют, будете делать 100 таблиц?
0
 Аватар для nixon93nixon
63 / 63 / 21
Регистрация: 08.02.2013
Сообщений: 262
09.10.2014, 23:41
Цитата Сообщение от iap Посмотреть сообщение
Код SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
WITH m12b_CTE(kod_val, field1)
AS
(
t1.kod_val,
m12b.field1
FROM t1
INNER JOIN m12b ON m12b.id = t1.id AND t1.kod_val = 0
)
WITH m12r_CTE(kod_val, field1)
AS
(
t1.kod_val,
m12r.field1
FROM t1
INNER JOIN m12r ON m12r.id = t1.id AND t1.kod_val <> 0
)
SELECT * FROM m12r_CTE
UNION ALL
SELECT * FROM m12b_CTE
можно еще вложенные сделать, но суть та же
Неплохо было бы сначала синтаксис посмотреть...
Замените второй WITH на запятую.
Но сама задача противоречит сути SQL.
Почему нельзя держать и рубли и баки и всё, что ещё понадобится,
в одной таблице с дополнительным полем с кодом валюты?
Если понадобятся 100 валют, будете делать 100 таблиц?
это уже другой вопрос
0
29 / 29 / 19
Регистрация: 18.11.2012
Сообщений: 338
Записей в блоге: 1
10.10.2014, 12:47  [ТС]
iap, не я таблицы то делал..база у нас кал еще тот

Добавлено через 2 часа 32 минуты
разобрался сам, спс
SQL
1
2
3
4
5
6
7
8
9
10
SELECT *,CASE rnk WHEN 1 THEN 'pyt' END AS vid FROM (SELECT gr,ng,nttn1,datotg,CASE kv WHEN 1 THEN sumoplr ELSE sumopl END AS suma
,kolden,'0' AS d_prost,'0' AS prim,'ap' AS pyt,
ROW_NUMBER() OVER(PARTITION BY  kg,ng ORDER BY  kg,ng) rnk
   FROM nsi_test.dbo.mp01504,nsi.dbo.nsipp WHERE gr=kg) AS t1
UNION ALL
SELECT *,CASE rnk WHEN 1 THEN 'dolg' END AS vid FROM (SELECT gr,ng,nttn1,datotg,sumopl
,kolden,datediff(DAY,dateadd(DAY,CAST(kolden AS INT),datotg),getdate()) AS d_prost,prim,'bd' AS pyt,
ROW_NUMBER() OVER(PARTITION BY  kg,ng ORDER BY  kg,ng) rnk
   FROM ssmtest.dbo.mp01504a,nsi.dbo.nsipp WHERE gr=kg) AS t2
ORDER BY gr,pyt
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.10.2014, 12:47
Помогаю со студенческими работами здесь

Как реализовать автозаполнение поля в DbGrid в зависимости от значения другого поля
Добрый день. Не могу разобраться в автозаполнением поля в gdgride. Суть проблемы, имеется у меня таблица в которой есть поле...

Отображение поля в зависимости от значения другого поля
Уважаемые знатоки, имею такую ситуацию поле №1 имеет выбор по выпадающему списку из двух значений: 'однократная' и 'двукратная' ...

Автоматическое изменения поля в зависимости от введенных данных в другую таблицу
Здравствуйте. У меня возник такой вопрос, при разработке базы данных Библиотека, таблица Книги, где есть поле Количество свободных...

Фильтр формы в зависимости от значения поля
Здравствуйте. Помогите, пожалуйста, реализовать идею. В форме &quot;Задачи&quot; необходимо запускать фильтр, в зависимости от значения поля...

Изменение цвета поля в зависимости от значения
Как в ленточной или табличной форме (Access 2000) при помощи VBA подсветить поле, в зависимости от его значения (больше или меньше 0)? ...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru