Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 3
Регистрация: 21.07.2012
Сообщений: 136

Тройной вложенный запрос

01.02.2017, 21:12. Показов 2342. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите как объединить вот такие три запроса:

SQL
1
2
3
SELECT Phone FROM AllBase WHERE Phone= '22222222'";
INSERT INTO AllBase (Phone) (Phone) VALUES  ('22222222');
Select ID from AllBase (Phone) where Phone= '22222222'
суть такова что мне нужно проверить есть ли запись в таблице, если нету то добавить запись в таблицу и вывести ее ID, а если есть то просто вывести ее ID
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.02.2017, 21:12
Ответы с готовыми решениями:

Вложенный запрос вернул больше одного значения Это запрещено, когда вложенный запрос следует после =, !=, <, <
Здравствуйте,проблема вот в чем,при добавление записи в таблицу,первая запись добавляется,а при добавление второй выдает что...

Вложенный запрос вернул больше одного значения Это запрещено, когда вложенный запрос следует после =, !=, <
Здравствуйте,проблема вот в чем,при добавление записи в таблицу,первая запись добавляется,а при добавление второй выдает что...

Запрос Select T-sql - Вложенный запрос вернул больше одного значения
Нужно посчитать комиссию от сделки. DealShare(комиссия) - поле таблицы agents, supplies - предложения(риелторы клиентам) deals-...

7
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
01.02.2017, 21:28
Лучший ответ Сообщение было отмечено dem_on как решение

Решение

T-SQL
1
2
3
4
5
6
merge into AllBase t
using (values ('22222222')) s(Phone) on s.Phone = t.Phone
when not matched then
 insert (Phone) values (s.Phone);
 
select ID from AllBase where Phone = '22222222';
1
0 / 0 / 3
Регистрация: 21.07.2012
Сообщений: 136
01.02.2017, 21:38  [ТС]
спасибо

Добавлено через 1 минуту
Цитата Сообщение от invm Посмотреть сообщение
merge into AllBase t
using (values ('22222222')) s(Phone) on s.Phone = t.Phone
when not matched then
*insert (Phone) values (s.Phone);
select ID from AllBase where Phone = '22222222';
если не сложно можете расписать или ссылку где почитать?
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
01.02.2017, 23:27
Лучший ответ Сообщение было отмечено dem_on как решение

Решение

T-SQL
1
2
3
4
5
6
7
DECLARE @Id int
SELECT @Id = ID from AllBase where Phone= '22222222'
IF @Id IS NULL BEGIN
  INSERT INTO AllBase (Phone) VALUES  ('22222222');
  Select ID from AllBase where Phone= '22222222'
END
ELSE select @Id
в таком виде ссылки, полагаю, не нужны
1
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
02.02.2017, 10:26
Цитата Сообщение от dem_on Посмотреть сообщение
если не сложно можете расписать или ссылку где почитать?
На почитать - MERGE (Transact-SQL)

Для гарантии отсутствия дубликатов необходимо ограничение уникальности на Phone. Плюс, для предотвращения возникновения ошибки в многопользовательском окружении при попытке вставить дубликат, код нужно слегка доработать:
T-SQL
1
2
3
4
merge into AllBase with (serializable) t
using (values ('22222222')) s(Phone) on s.Phone = t.Phone
when not matched then
 insert (Phone) values (s.Phone);
0
0 / 0 / 3
Регистрация: 21.07.2012
Сообщений: 136
02.02.2017, 12:58  [ТС]
invm, что то не работает, подсвечивается AllBase , t.phone и phone

Добавлено через 2 минуты
YuryK, да, так все понятно, но с marge тоже интересно)
0
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
02.02.2017, 13:02
Цитата Сообщение от dem_on Посмотреть сообщение
что то не работает
Версия сервера ниже 2008-го?
0
0 / 0 / 3
Регистрация: 21.07.2012
Сообщений: 136
02.02.2017, 13:18  [ТС]
invm, нет, 12-я

Добавлено через 13 минут
invm, нашёл , моя вина, база данных allbase в ней таблица phone а в ней поле phone, исправил но теперь светится marge

Добавлено через 1 минуту
invm, работает, спасибо большое

Добавлено через 29 секунд
Спасибо за 2 варианта решения,
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.02.2017, 13:18
Помогаю со студенческими работами здесь

вложенный запрос
есть две базы 1)InGroup ..id as long (key field) ..user_id as long ..group_id as long 2)Groups ..id as long (key field) ...

Вложенный запрос
Есть Таблицы Поезд ,Вагон и Билет. Нужно найти поезда с максимальным соотношением цены и продолжительности в таблице Билет. вот такой...

Вложенный запрос
Вообщем нужно выбрать из таблицы ListPubln все &quot;справочники&quot; на англ. языке. Так как разных видов изданий(справочники, газеты, журналы и...

Вложенный запрос
Нужно составить такои запрос: в таблице след записи: ИД, КОД, ВремяПосещения. Выбрать всё из таблицы, где ИД - максимальное значение, то...

Вложенный запрос
Имеются две таблицы с идентичными полями. Нужно вывести информацию о всех мужчинах младше 1990 года, и в этом списке найти какое количество...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru