3 / 3 / 0
Регистрация: 25.12.2012
Сообщений: 23
1

Фильтр в запросе

26.03.2013, 18:18. Показов 1922. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, колдую с запросом на базе которого работает отчет
SQL
1
2
3
4
SELECT Статьи.Код, Статьи.Статья, КонДогПЗ.Договоры.Номер, КонДогПЗ.Договоры.[Дата от], КонДогПЗ.Договоры.[Сумма договора], КонДогПЗ.Договоры.[Предмет или описание], КонДогПЗ.Договоры.КонтрагентID, КонДогПЗ.Договоры.[Заказчик или получатель], КонДогПЗ.Договоры.[Информация о выполнении], КонДогПЗ.Договоры.Статус, КонДогПЗ.Договоры.[Дата закрытия], КонДогПЗ.Входящие_Код, КонДогПЗ.Входящие.Дата, КонДогПЗ.Микрорайоны.Микрорайон, КонДогПЗ.Объекты.[Краткое наименование], Статьи.ОбзорДД
FROM Статьи LEFT JOIN КонДогПЗ ON Статьи.Код=КонДогПЗ.Договоры.СтатьяID
WHERE (((Статьи.ОбзорДД)=TRUE))
ORDER BY Статьи.Код, Статьи.Код;
Смысл запроса в отображении статей и отнесенных к ним договоров, но очень важно отображать статьи даже если к ним ничего не отнесено. Однако, при добавлении условия отбора по "КонДогПЗ.Объекты.[Краткое наименование]" все лишние статьи исчезают, а надо отображать их пустыми.

Пока пользуюсь отчетом с подчиненным отчетом, там получается, но скорость работы удручает т.к. акцесс пересчитывает все для каждой строки и тормозит даже при прокрутке.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.03.2013, 18:18
Ответы с готовыми решениями:

Флагом включить фильтр в запросе
Добрый день, вопрос наверно очень бональный, но я не когда не работал с флагами или...

Фильтр (условие) в запросе на последнюю дату
Уважаемые форумчане! Помогите решить такую задачку. Условие: есть две таблицы, 1-я –...

Фильтр для вычисляемого столбца(дата и время) в запросе
Добрый день. Есть вычисляемый столбец в запросе. Тип столбца: дата и время. Возможно ли сделать...

Фильтр в форме не позволяет выбрать все записи в запросе
Друзья, помогите! Зашел в тупик. Решение должно быть где-то на поверхности, но я уже заел в...

18
3356 / 1775 / 83
Регистрация: 05.08.2010
Сообщений: 4,471
26.03.2013, 19:18 2
А что это за зверь такой? КонДогПЗ.Договоры.СтатьяID и это КонДогПЗ.Договоры.[Дата от] и....О, да их там много...

Добавлено через 3 минуты
Цитата Сообщение от asd_skala Посмотреть сообщение
все лишние статьи исчезают, а надо отображать их пустыми.
А вообще, это скорее из за LEFT JOIN вместо RIGHT..(?). я так думаю..
0
Эксперт MS Access
26805 / 14484 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
26.03.2013, 19:21 3
asd_skala, найти решение, я думаю, несложно. Но надо прояснить ситуацию.
Вы пишете: условия отбора по "КонДогПЗ.Объекты.[Краткое наименование]". Здесь КонДогПЗ наверное таблица, [Краткое наименование] это скорее всего имя поля. А что такое Объекты в этом имени?
0
3356 / 1775 / 83
Регистрация: 05.08.2010
Сообщений: 4,471
26.03.2013, 19:24 4
Просмотрел еще раз запрос....

Меня к такому не готовили...(с)
0
Модератор
Эксперт MS Access
11955 / 4823 / 779
Регистрация: 07.08.2010
Сообщений: 14,126
Записей в блоге: 4
26.03.2013, 19:26 5
переведя в читаемый вид
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
SELECT
 Статьи.Код,
 Статьи.Статья,
 Статьи.ОбзорДД,
 w.Договоры.Номер,
 w.Договоры.[Дата от],
 w.Договоры.[Сумма договора],
 w.Договоры.[Предмет или описание],
 w.Договоры.КонтрагентID,
 w.Договоры.[Заказчик или получатель],
 w.Договоры.[Информация о выполнении],
 w.Договоры.Статус,
 w.Договоры.[Дата закрытия],
 
 w.Входящие_Код,
 w.Входящие.Дата,
 w.Микрорайоны.Микрорайон,
 w.Объекты.[Краткое наименование]
 
FROM Статьи LEFT JOIN КонДогПЗ w
 ON Статьи.Код=w.Договоры.СтатьяID
WHERE (((Статьи.ОбзорДД)=TRUE))
ORDER BY Статьи.Код, Статьи.Код;
не поняла откуда
w.Входящие_Код,
w.Входящие.Дата,
w.Микрорайоны.Микрорайон,
w.Объекты.[Краткое наименование]
хотя и трех звенное
w.Договоры.Номер

жаждет пояснения что за запрос КонДогПЗ(или еще что ......)
-------------
0
3356 / 1775 / 83
Регистрация: 05.08.2010
Сообщений: 4,471
26.03.2013, 19:32 6
shanemac51, приветствую!
Если ты не поняла всего лишь те строчки(которые привела в пример), значит поняла все остальное..
Объясни плизз: почему в перечислении таблицы.поля указывается 3 каких то "объекта"(даже не знаю как и выразиться..)?
0
Модератор
Эксперт MS Access
11955 / 4823 / 779
Регистрация: 07.08.2010
Сообщений: 14,126
Записей в блоге: 4
26.03.2013, 19:45 7
я сначала не заметила, что и другие трехярусные
1
3356 / 1775 / 83
Регистрация: 05.08.2010
Сообщений: 4,471
26.03.2013, 20:23 8
А я думал, что один чего то не понял...
Я уж молчу про непонятный набор таблиц в Select-е, которые не указаны в Join-е, а также зачем 2- Статьи.Код в Order By..
0
3 / 3 / 0
Регистрация: 25.12.2012
Сообщений: 23
27.03.2013, 10:02  [ТС] 9
Это запрос на базе другого запроса КонДогПЗ - подзапрос который выбирает поля из таблиц Договоры, Входящие, Микрорайоны, Объекты использует INNER JOIN

Такие конструкции строит мастер акцессовский, я только поправляю их по наставлению форумчан.
Чтобы вываливались все статьи, даже у которых нет подчиненных записей и ставлю LEFT JOIN. (про RIGHT JOIN пока не в курсе)

Вторую Статьи.Код акцесс тоже сам добавил, я работаю в конструкторе запросов, за ним устанешь все исправлять.
0
Эксперт MS Access
7395 / 4532 / 295
Регистрация: 12.08.2011
Сообщений: 14,015
27.03.2013, 10:31 10
Цитата Сообщение от asd_skala Посмотреть сообщение
я работаю в конструкторе запросов, за ним устанешь все исправлять.
Какая версия?
0
3 / 3 / 0
Регистрация: 25.12.2012
Сообщений: 23
27.03.2013, 10:39  [ТС] 11
Переделал оба запроса в более привычный (как я понял) вид
Подзапрос: КонДогПЗ
SQL
1
2
SELECT Договоры.ВходящийID AS Входящий, Договоры.Номер AS Номер, Договоры.[Дата от] AS Дата, Договоры.[Сумма договора] AS Сумма, Договоры.[Предмет или описание] AS Предмет, Договоры.КонтрагентID AS Контрагент, Договоры.[Заказчик или получатель] AS Заказчик, Договоры.[Информация о выполнении] AS ИнфВып, Договоры.Статус AS Статус, Договоры.[Дата закрытия] AS ДатаЗакр, Входящие.Код AS Входящие_Код, Входящие.Дата AS ДатаПост, Микрорайоны.Микрорайон AS Микрорайон, Объекты.[Краткое наименование] AS Объект, Договоры.СтатьяID AS СтатьяID
FROM (Микрорайоны INNER JOIN Объекты ON Микрорайоны.Код = Объекты.МикрорайонID) INNER JOIN (Входящие INNER JOIN Договоры ON Входящие.Код = Договоры.ВходящийID) ON Объекты.Код = Договоры.ОбъектID.Value;
Вот запрос который делает то что надо но для всех объектов
SQL
1
2
3
4
SELECT Статьи.Код, Статьи.Статья, КонДогПЗ.Номер, КонДогПЗ.Дата, КонДогПЗ.Сумма, КонДогПЗ.Предмет, КонДогПЗ.Контрагент, КонДогПЗ.Заказчик, КонДогПЗ.ИнфВып, КонДогПЗ.Статус, КонДогПЗ.ДатаЗакр, КонДогПЗ.Входящие_Код, КонДогПЗ.ДатаПост, КонДогПЗ.Микрорайон, КонДогПЗ.Объект
FROM Статьи LEFT JOIN КонДогПЗ ON Статьи.Код = КонДогПЗ.СтатьяID
WHERE (((Статьи.ОбзорДД)=TRUE))
ORDER BY Статьи.Код;
Извиняюсь что всех немного запутал, надеюсь так понятней
ЗЫ в акцессе оба варианта запросов работают одинаково
0
3356 / 1775 / 83
Регистрация: 05.08.2010
Сообщений: 4,471
27.03.2013, 10:44 12
А разве .Value может работать в запросе? (Договоры.ОбъектID.VALUE)
Jet SQL, насколько я знаю, ничего не знает о .Value...Или Вы так к таблице обращаетесь?..

P.S. что то я с каждым разом дивлюсь синтаксису..Может скажете все таки, какой Access используете?

Добавлено через 2 минуты
Кстати, в первом запросе у Вас нет условия:
SQL
1
WHERE (((Статьи.ОбзорДД)=TRUE))
Как тогда они могут выдавать одинаковый массив данных?

Короче, ИМХО, пока не выложите сюда кусочек это й БД (а именно таблицы с некоторым количеством данных и сами запросы), сложно будет хоть кому то что то здесь понять..
0
Эксперт MS Access
26805 / 14484 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
27.03.2013, 10:45 13
Цитата Сообщение от asd_skala Посмотреть сообщение
Смысл запроса в отображении статей и отнесенных к ним договоров, но очень важно отображать статьи даже если к ним ничего не отнесено. Однако, при добавлении условия отбора по "КонДогПЗ.Объекты.[Краткое наименование]" все лишние статьи исчезают, а надо отображать их пустыми.
Попробуйте запрос в варианте записи от shanemac51
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 Статьи.Код,
 Статьи.Статья,
 Статьи.ОбзорДД,
 w.Договоры.Номер,
 w.Договоры.[Дата от],
 w.Договоры.[Сумма договора],
 w.Договоры.[Предмет или описание],
 w.Договоры.КонтрагентID,
 w.Договоры.[Заказчик или получатель],
 w.Договоры.[Информация о выполнении],
 w.Договоры.Статус,
 w.Договоры.[Дата закрытия],
 
 w.Входящие_Код,
 w.Входящие.Дата,
 w.Микрорайоны.Микрорайон,
 w.Объекты.[Краткое наименование]
 
FROM Статьи LEFT JOIN (SELECT * FROM КонДогПЗ WHERE Объекты.[Краткое наименование]=<Условие> ) w
 ON Статьи.Код=w.Договоры.СтатьяID
WHERE (((Статьи.ОбзорДД)=TRUE))
ORDER BY Статьи.Код, Статьи.Код
1
3 / 3 / 0
Регистрация: 25.12.2012
Сообщений: 23
27.03.2013, 10:54  [ТС] 14
Версия 2007
0
3 / 3 / 0
Регистрация: 25.12.2012
Сообщений: 23
27.03.2013, 13:30  [ТС] 15
Цитата Сообщение от Agapov_stas Посмотреть сообщение
А разве .Value может работать в запросе? (Договоры.ОбъектID.VALUE)
Value делает 2007 акцесс если при создании в таблице поля с подстановкой разрешаешь выбирать несколько значений (вместо связующих таблиц)


mobile,
FROM Статьи LEFT JOIN (SELECT * FROM КонДогПЗ WHERE Объект=[Forms]![КонтрольДоговоров]![Объ] ) КонДогПЗ ON Статьи.Код=КонДогПЗ.СтатьяID

выдало список статей без договоров, может я в синтаксисе напутал

Приложил базу целиком.
Вложения
Тип файла: zip База данных1.zip (3.67 Мб, 20 просмотров)
0
Эксперт MS Access
7395 / 4532 / 295
Регистрация: 12.08.2011
Сообщений: 14,015
28.03.2013, 02:06 16
Цитата Сообщение от asd_skala Посмотреть сообщение
Value делает 2007 акцесс если при создании в таблице поля с подстановкой
О, дальше можно не читать, всё ясно! Большое фу-у-у!
0
3 / 3 / 0
Регистрация: 25.12.2012
Сообщений: 23
28.03.2013, 09:24  [ТС] 17
alvk, Можно по подробней, что я делаю не так?
0
Эксперт MS Access
7395 / 4532 / 295
Регистрация: 12.08.2011
Сообщений: 14,015
28.03.2013, 09:58 18
Цитата Сообщение от asd_skala Посмотреть сообщение
alvk, Можно по подробней, что я делаю не так?
Конечно можно:
Поля подстановки в таблицах
1
3 / 3 / 0
Регистрация: 25.12.2012
Сообщений: 23
28.03.2013, 12:56  [ТС] 19
alvk, спасибо за разъяснения, думаю что по мере развития базы потихоньку избавлюсь от полей с подстановками. В свое время поняв что в работе необходимо использовать базы данных я также понял что акцесс не освоить методом тыка, поэтому купил Access 2007 Missing Manual, по нему и копаю, там очень понятно описано как использовать поля с подстановками
0
28.03.2013, 12:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.03.2013, 12:56
Помогаю со студенческими работами здесь

Фильтр в запросе
Привет всем, у меня вот такой вопрос Как отфильтровать данные, чтобы не показывалась запись &quot;Нет...

Фильтр в запросе к базе
Нужно выполнить запрос к базе данных. База данных db1 , таблица log. Нужно вывести в переменную...

Фильтр в запросе по значению реквизита
Доброго дня! Подскажите пожалуйста, задача такова: есть 3 различные ТЧ в документе, которые...

Фильтр по форме по нескольким логическим полям с использованием кнопки Общий фильтр
Здравствуйте! Есть простая таблица и созданная форма. Идея в том, чтобы ставя галки осуществлять...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru