Помогите выполнить запрос

Диана06
Дата: 06.11.2012 13:16:51
помогите выполнить запрос. Проверить Отсутствие обязанностей у мужчин, которые есть только у женщин.
Обязанности со следующими кодами могут быть только у женщин:

SET FILTER TO OCCURS("51010", kod)>0 OR OCCURS("51011", kod)>0 OR OCCURS("51012", kod)>0 OR OCCURS("51047", kod)>0 OR OCCURS("51026", kod)>0 OR OCCURS("51027", kod)>0 OR OCCURS("55033", kod)>0 OR OCCURS("55035", kod)>0

Обязанности хранятся в таблице osz.dbf. в этой таблице можно выделить основные поля Name и kod (название и код).
Есть еще две таблицы Ludi (люди) в ней можно выделить основные поля FIO, id.
Есть третья таблица которая содержащая в себе информацию о функциях этих людей. В ней основное поле kod_obyaz и id.

Несколько часов потратила на осмысливание но никак не могу разобраться. Надо проверить отсутствие обязанностей у мужчин, которые есть у женщин.
Dima T
Дата: 06.11.2012 13:48:52
Диана06
Надо проверить отсутствие обязанностей у мужчин, которые есть у женщин.

Выбираешь в один курсор обязанности мужчин (obm), в другой женщин (obw)
затем
select * from obw where obw.id not in (select id from obm)

id - код обязанности
Диана06
Дата: 06.11.2012 13:54:26
Dima T, так то можно, но у меня есть таблица где хранятся данные о людях о мужчинах и женщинах, и есть таблица obyaz с полями kod_obyaz и id где хранятся функции которые они выполняли в какой-то промежуток скажем за месяц. И надо проверить отсутствие у мужчин тех обязанностей которые могут быть только у женщины.

таблица obyaz и ludi связаны по полю id.. А таблица osz с таблицей obyaz по полю kod_obyaz (kod)
Dima T
Дата: 06.11.2012 14:00:42
Диана06
хранятся функции которые они выполняли в какой-то промежуток скажем за месяц. И надо проверить отсутствие у мужчин тех обязанностей которые могут быть только у женщины.

В чем проблема выбрать все функции выполненные мужчинами за нужный период? также женщинами.
Диана06
Дата: 06.11.2012 14:03:25
Dima T, в этом проблем нет. Проблема в том что не понимаю как проверить отсутствие обязанностей у мужчин, которые у женщин только могут быть
Диана06
Дата: 06.11.2012 14:04:42
обязанности мужчин могу выбрать так

select * from obyaz where ludi.id=obyaz.id


ну выберу я их , а дальше как поступить?
IgorNG
Дата: 06.11.2012 14:05:11
Диана06
Dima T, в этом проблем нет. Проблема в том что не понимаю как проверить отсутствие обязанностей у мужчин, которые у женщин только могут быть


Не отсутствие, а наличие.
Dima T
Дата: 06.11.2012 14:12:18
Диана06
обязанности мужчин могу выбрать так

select * from obyaz where ludi.id=obyaz.id


ну выберу я их , а дальше как поступить?

Я выше написал уже как
в один курсор обязанности мужчин
select * from obyaz where ludi.id=obyaz.id into cursor obm

затем в другой обязанности женщин
select * from obyaz where ??????? into cursor obw

затем выбираем обязанности которые есть у женщин и нет у мужчин
select * from obw where obw.id not in (select id from obm)


Только что-то мне подсказывает что твоим запросом совсем другое выберется :)
Диана06
Дата: 06.11.2012 14:12:52
IgorNG, именно отсутствие проверить. Я выше написала какие обязанности могут быть только у женщин
Диана06
Дата: 06.11.2012 14:24:53
вы пишите
select * from obyaz where ludi.id=obyaz.id into cursor obm
говоря что id это код обязанности. А у меня это не так:

давайте я вам заново скажу как связаны таблицы

Таблица Obyazannosti (поля Namm, kod_obz)
Таблица Ludi (поля ID)
Таблица Obyaz (поля id, kod_obz)

Таблицу Ludi и Obyaz можно связать по полю ID т.е. у человека с таким id такая обязанность
Таблицу Obyaz и Obyazannosti можно связать по полю Kod_obz.

И вот как теперь проверить следующее: Отсутствие у мужчин обязанностей которые могут быть только у женщин
обязанности с такими кодами могут быть только у женщин

SET FILTER TO OCCURS("51009", kod_obz)>0 OR OCCURS("51058", kod_obz)>0 OR OCCURS("51046", kod_obz)>0 OR OCCURS("51052", kod_obz)>0 OR OCCURS("51020", kod_obz)>0 OR OCCURS("51030", kod_obz)>0