powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Непонятка с запросом
9 сообщений из 9, страница 1 из 1
Непонятка с запросом
    #39920929
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть запрос с двумя условиями 1 и 2
применяю оба условия -
Код: sql
1.
2.
3.
SELECT [MAIN]![MARKA] & [MAIN]![COMMENT] & [MAIN]![add] & [MAIN]![art] AS Наименование
FROM MAIN INNER JOIN vers ON MAIN.CODE = vers.codem
WHERE ((([MAIN]![MARKA] & [MAIN]![COMMENT] & [MAIN]![add] & [MAIN]![art]) Like "*71*") AND ((IIf(Exists (SELECT znper.* From znper WHERE (((znper.codever)=vers.code) AND ((znper.codeper)=6));),(SELECT znper.znper From znper WHERE (((znper.codeper)=6) AND ((znper.codever)=vers.code));),Null)) Between 0.1 And 1));


это работает

Применяю только условие 2-
Код: sql
1.
2.
3.
SELECT [MAIN]![MARKA] & [MAIN]![COMMENT] & [MAIN]![add] & [MAIN]![art] AS Наименование
FROM MAIN INNER JOIN vers ON MAIN.CODE = vers.codem
WHERE (((IIf(Exists (SELECT znper.* From znper WHERE (((znper.codever)=vers.code) AND ((znper.codeper)=6));),(SELECT znper.znper From znper WHERE (((znper.codeper)=6) AND ((znper.codever)=vers.code));),Null)) Between 0.1 And 1));


это не работает : Данный подчиненный запрос должен возвращать не более одной записи

применяю только условие 1
Код: sql
1.
2.
3.
SELECT [MAIN]![MARKA] & [MAIN]![COMMENT] & [MAIN]![add] & [MAIN]![art] AS Наименование
FROM MAIN INNER JOIN vers ON MAIN.CODE = vers.codem
WHERE ((([MAIN]![MARKA] & [MAIN]![COMMENT] & [MAIN]![add] & [MAIN]![art]) Like "*71*"));


работает.....
что я делаю не так?????

Отмечаю особо - все это делаю в конструкторе....
...
Рейтинг: 0 / 0
Непонятка с запросом
    #39920932
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странно, что первый работает... сделай SELECT TOP 1 znper.znper .
...
Рейтинг: 0 / 0
Непонятка с запросом
    #39920935
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina
Странно, что первый работает... сделай SELECT TOP 1 znper.znper .

помогло.... спасибо!!!!
...
Рейтинг: 0 / 0
Непонятка с запросом
    #39920948
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311, а давно в Access можно применять точку с запятой в тексте запроса?
...
Рейтинг: 0 / 0
Непонятка с запросом
    #39920954
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург
Serg197311, а давно в Access можно применять точку с запятой в тексте запроса?

а она не просто в тексте запроса - она внутри вызова функции
...
Рейтинг: 0 / 0
Непонятка с запросом
    #39920980
Код: sql
1.
WHERE (((IIf(Exists (SELECT znper.* From znper WHERE (((znper.codever)=vers.code) AND ((znper.codeper)=6));),(SELECT znper.znper From znper WHERE (((znper.codeper)=6) AND ((znper.codever)=vers.code));),Null)) Between 0.1 And 1));

Ваше условие , ИМХО, звучит так: Если в таблице znper есть записи по двум условиям, то тогда из этой же таблицы при тех же условиях возвращается значение поля "znper" (предположительно одной записи, но не факт даже с добавлением TOP 1), которое дополнительно проверяется на Between 0.1 And 1. Так? Не слишком ли сложно и запутанно?
Может попробуйте так?:
Код: sql
1.
WHERE Exists (SELECT znper.* From znper WHERE (znper.codever=vers.code) AND (znper.codeper=6) And (znper.znper Between 0.1 And 1))
...
Рейтинг: 0 / 0
Непонятка с запросом
    #39920988
Serg197311
Akina
Странно, что первый работает... сделай SELECT TOP 1 znper.znper .
помогло.... спасибо!!!!
Этот костыль решает проблему с ошибкой, но теоретически при наличии нескольких записей, отвечающим двум условиям, в которых значение поля только одной записи входит в интервал 01-1, этот TOP 1 может "вернуть не ту запись" (и, гад такой, наверняка так и сделает).
...
Рейтинг: 0 / 0
Непонятка с запросом
    #39921081
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кривцов Анатолий
Этот костыль решает проблему с ошибкой, но теоретически при наличии нескольких записей, отвечающим двум условиям, в которых значение поля только одной записи входит в интервал 01-1, этот TOP 1 может "вернуть не ту запись" (и, гад такой, наверняка так и сделает).
Ну чтобы пофиксить сию проблему, нужен просто ORDER BY.
...
Рейтинг: 0 / 0
Непонятка с запросом
    #39921098
Akina
Кривцов Анатолий
Этот костыль решает проблему с ошибкой, но теоретически при наличии нескольких записей, отвечающим двум условиям, в которых значение поля только одной записи входит в интервал 01-1, этот TOP 1 может "вернуть не ту запись" (и, гад такой, наверняка так и сделает).
Ну чтобы пофиксить сию проблему, нужен просто ORDER BY.
Вообще-то, я надеюсь, что ТС попробует мой вариант условия и ему понравится. Что касается ORDER BY, то в случае наличия записей с 0.05, 0.5 и 1.5 при любой сортировке вернется не та запись. А в случае 0.5, 0.5 и 1,5 (т.е. 0.5 дважды), то запрос захочет вернуть две записи (такая фишка у TOP), что приведет к ошибке уже при выполнении. ИМХО.
ЗЫ. Вот почему у ТС работает вариант с дополнительным LIKE - не догоняю.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Непонятка с запросом
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]