Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
735 / 203 / 11
Регистрация: 23.06.2011
Сообщений: 440

Ошибка выполнения запроса с условие WHERE . IN (SELECT .)

31.05.2012, 17:21. Показов 2712. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть у меня в базе данных 2 таблицы: Securities, где хранятся ценные бумаги, и tempEQE06, где хранятся сделки.
У меня был написан запрос, чтобы при появлении новой ценной бумаги в таблице tempEQE06, она переносилась в таблицу Securities. Запрос следующего вида:
SQL
1
2
3
INSERT INTO Securities(SecurityID, SecurityName) 
SELECT SecurityID, SecurityName FROM tempEQE06 
WHERE SecurityID NOT IN (SELECT SecurityID FROM Securities)
Как недавно выяснилось, запрос не работает, т.е. SELECT не возвращает строк тогда, когда в tempEQE06 есть инструменты, не попавшие в Securities.

Я, переписал запрос:
SQL
1
2
3
4
INSERT INTO Securities(SecurityID, SecurityName) 
SELECT eqe.SecurityID, eqe.SecurityName FROM tempEQE06 AS eqe
LEFT JOIN Securities AS sec ON eqe.SecurityID=sec.SecurityID
WHERE ISNULL(sec.SecurityID)=TRUE
и этот работает. Сейчас переписываю остальные - у меня такого добра много.

Но остался вопрос: почему не работает первоначальный? Я на 99% уверен, что раньше он работал.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.05.2012, 17:21
Ответы с готовыми решениями:

После выполнения запроса "SELECT .... INTO TABLE " не сохраняется таблица
Здравствуйте! Имеется у меня вот такая процедура выполнения запроса: String ConnectionString = @"Driver={Microsoft Visual FoxPro...

Ошибка запроса SELECT
Доброй ночи Посылаю вот такой запрос: "SELECT * FROM hotel_name WHERE type=3,star=5,district=2" В ответ получаю ошибку: ...

Ошибка выполнения запроса
ВСем привет. Столкнулся с такой проблемой. В общем есть код. Он отлично работает на базе foxPro но не работает с mysql.Ошибка связана с...

7
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,380
01.06.2012, 02:57
Цитата Сообщение от Gibboustooth Посмотреть сообщение
WHERE ISNULL(sec.SecurityID)=TRUE
T-SQL
1
WHERE sec.SecurityID IS NULL
0
735 / 203 / 11
Регистрация: 23.06.2011
Сообщений: 440
01.06.2012, 09:49  [ТС]
Спасибо за поправку. Почему-то думал, что Access так не понимает.
Но это не помогает решить проблему с IN
0
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
01.06.2012, 12:55
Gibboustooth, в принципе, ваш запрос с NOT IN с виду вполне рабочий. И у меня по этому поводу только одно объяснения, да и то слегка иррациональное.:-)
Запросы с IN и NOT IN очень медленные и при больших объемах исполняются долго и очень долго. Может быть ваши пользователи просто не дотерпливают до исполнения и прекращают на середине? Соответственно, данные не попадают в выходную таблицу.
Для эксперимента попробуйте на реальных данных выполнить селект без инсерта. Будет ли зависать запрос? Будут ли записи в выходном наборе данных?
0
735 / 203 / 11
Регистрация: 23.06.2011
Сообщений: 440
01.06.2012, 15:48  [ТС]
Цитата Сообщение от mobile Посмотреть сообщение
Для эксперимента попробуйте на реальных данных выполнить селект без инсерта. Будет ли зависать запрос? Будут ли записи в выходном наборе данных?
Таблицы маленькие, запрос работает быстро. Не возвращает записей.
Пробую через JOIN - 1 запись.
Пробую через NOT EXISTS - 1 запись.
Пробую через NOT IN - не 0 записей.
Те же таблицы, те же столбцы, никаких ошибок.
Мистика.
0
3544 / 1118 / 94
Регистрация: 13.03.2011
Сообщений: 1,513
01.06.2012, 16:55
Для проверки создал таблицы, запрос работает.
Цитата Сообщение от Gibboustooth Посмотреть сообщение
Мистика.
Попробуйте такое заклинание
SQL
1
... WHERE NOT (SecurityID IN (SELECT Securities.SecurityID FROM Securities))
Если не поможет, то выложите, пожалуйста, фрагмент БД с небольшим примером.
1
735 / 203 / 11
Регистрация: 23.06.2011
Сообщений: 440
01.06.2012, 18:22  [ТС]
Спасибо. Попробую так на работе. Запрос рабочий - сам понимаю. Это-то меня и удивляет
0
41 / 41 / 3
Регистрация: 14.10.2011
Сообщений: 60
02.06.2012, 09:57
А так если попробовать?
SQL
1
2
3
INSERT INTO Securities(SecurityID, SecurityName) 
SELECT SecurityID, SecurityName FROM tempEQE06 
WHERE NOT (SecurityID = SOME (SELECT SecurityID FROM Securities))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.06.2012, 09:57
Помогаю со студенческими работами здесь

Ошибка выполнения запроса
Ошибка такова: Ошибка выполнения запроса №6 INSERT command denied to user ''@'localhost' for table 'comment' Пользователь со всеми...

Постоянно ошибка Ошибка выполнения дочернего запроса для дескриптора 'System.Web.Mvc.HttpHandlerUtil+ServerExe
Всем привет! Раз 10 в день получаю такую ошибку: Ошибка выполнения дочернего запроса для дескриптора...

Ошибка выполнения SQL запроса
Такая проблема, уважаемые: Имею базу данных Acces( myBasa1 ) в ней таблица( mytable1 ) содержащая три столбца - myID( первичный ключ ),...

PHP, ошибка выполнения запроса
приветствую, прошу помочь:) при выполнении SQL запроса в PHP выдает ошибку: Query failed: You have an error in your SQL syntax; check the...

Ошибка выполнения запроса. Обработка проведения документа.
Вот такая ошибка: Ошибка при выполнении обработчика - 'ОбработкаПроведения' по причине: ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru