Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запрос 
V
    Опции темы
kapbepucm
Дата 31.10.2007, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: нет
Всего: 12



Помогите с запросом, что-то сегодня не получается самостаятельно smile
Код
-----------------------------------------
Name     Param1       Param2       Param3
-----------------------------------------
A1       True         False        False
A2       True         False        False
A3       False        True         False
A4       False        False        True
-----------------------------------------
Есть 3 boolean функции IsParam1, IsParam2, IsParam3. Они "общий" критерий отбора.
В общем, сформулировать сложно. Приблизительно так: если IsParam1=True, взять все записи, где Param1=True; далее, если IsParam2=True, добавить (если они ещё не добавлены) все записи, где Param2=True; далее, если IsParam3=True, добавить (если они ещё не добавлены) все записи, где Param3=True. Если IsParam[X]=False, cтолбец Param[X] вообще во внимание не берём.
Здесь параметры- это отношение к определённой сфере деятельности какого-то лица (A1,A2,A3,A4). Запрос: "а покажи-ка мне, кто из них занимается Param1"- было бы просто в секции Where написать Param1=IsParam1(). Запрос типа: "а давай в общем посмотрим сферы Param1 и Param3: кто поимённо тут задейсвован?"- создаёт у меня затруднение.
Есть закономерность- одно лицо будет задействовано не больше, чем в одной сфере (всегда). В связи с этим нужен будет запрос-проверка, выявляющий лиц нигде незадейсвованных или задейсвованных в более чем одной сфере (но это не главное на данный момент).

Это сообщение отредактировал(а) kapbepucm - 31.10.2007, 11:04


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
Akina
Дата 31.10.2007, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(kapbepucm @  31.10.2007,  11:57 Найти цитируемый пост)
Приблизительно так: если IsParam1=True, взять все записи, где Param1=True; далее, если IsParam2=True, добавить (если они ещё не добавлены) все записи, где Param2=True; далее, если IsParam3=True, добавить (если они ещё не добавлены) все записи, где Param3=True. Если IsParam[X]=False, cтолбец Param[X] вообще во внимание не берём.

Куда добавлены? должен быть запрос на добавление в какую-то таблицу? и потом - что за "далее"??? в алгоритме такого быть не должно, должно быть только ""если ... то ... иначе если ... то ... иначе ...". 

Цитата(kapbepucm @  31.10.2007,  11:57 Найти цитируемый пост)
Запрос типа: "а давай в общем посмотрим сферы Param1 и Param3: кто поимённо тут задейсвован?"- создаёт у меня затруднение.

where (Param1 OR Param3)


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
kapbepucm
Дата 31.10.2007, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: нет
Всего: 12



Если-бы я чётко сформулировал задание, то и тему бы не начинал  smile 
Мне бы одним запросом. Отдалённое описание (Table1 будет ресурснои таблицей):
1)Запрос1: если IsParam1()=False, то "пустой" запрос, иначе
Код
Select * From Table1 Where Param1=True
2)Запрос2: если IsParam2()=False, то "пустой" запрос, иначе
Код
Select * From Table1 Where Param2=True
3)Запрос3: если IsParam3()=False, то "пустой" запрос, иначе
Код
Select * From Table1 Where Param3=True
4)объединить все три запроса, но только так, чтобы записи не повторялись (хотя они, наверное, повторятся не будут)
Думаю, можно это в одном запросе сделать, хитрую секцию Where грамотно написав.

Это сообщение отредактировал(а) kapbepucm - 31.10.2007, 12:47


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
bopoha
Дата 31.10.2007, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

Репутация: 21
Всего: 21



Можно написать фукнцию, передать ей три эти поля. Там реализовать всю логику проверки. Возвращать true/flase.
Тогда запрос будет выглядеть проще, но выполняться чуть дольше.
PM MAIL WWW ICQ Skype GTalk   Вверх
Akina
Дата 31.10.2007, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Код

Select * 
From Table1 
Where ((Param1 AND IsParam1()) OR (Param2 AND IsParam2()) OR (Param3 AND IsParam3()))



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
kapbepucm
Дата 31.10.2007, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: нет
Всего: 12



Akina, спасибо! Плюс от меня smile


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »


 




[ Время генерации скрипта: 0.0478 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.