Страница 1 из 1

Запрос на фото

Добавлено: 07 ноя 2008, 11:26
Дарья
Не работает запрос!!! Необходимо получить список всех сотрудников, у которых нет фотографии (фильтр по работающим).
*****Ничего не выводит****************************
select TABNMB, ABSTRACT, PERSONS.FIO, KATPODR.NAME
from KATPODR, PERSONS left join APPENDIX
on (PERSONS.NREC = APPENDIX.PERSON)
where ((PERSONS.GALDEP /== KATPODR.NREC
and (KATPODR.KOD <> '5'
and APPENDIX.ABSTRACT <> 'Фотография'
and APPDATE <> 0
and DISDATE = 0)
));
**************************************************
select TABNMB, ABSTRACT, PERSONS.FIO, KATPODR.NAME
from KATPODR, PERSONS left join APPENDIX
on (PERSONS.NREC = APPENDIX.PERSON)
where ((PERSONS.GALDEP /== KATPODR.NREC
and (KATPODR.KOD <> '5'
//and APPENDIX.ABSTRACT <> 'Фотография'
and APPDATE <> 0
and DISDATE = 0)
));
Выводит так:
Название приложения Фамилия, Имя, Отчество

Фотография Авдеев Иван Семенович
?????????????????????? Трушкина Тамара Дмитриевна
Водитель-профессионал Дроздов Петр Сергеевич

Как сделать фильтр по названию приложения?

Добавлено: 07 ноя 2008, 12:45
edward_K
да все течет все меняется - вот и join добавили. тыды надо бы left outer join но outer не нашел.
по старинке вот так
from persons, appendix // обязательно
where ((
PERSONS.NREC == APPENDIX.PERSON
and 'Фотография' == APPENDIX.ABSTRACT (noindex)
)) and not isvalidall(tnAppendix)

Добавлено: 07 ноя 2008, 13:21
k_vit

Код: Выделить всё

select
  PERSONS.TABNMB,
  APPENDIX.ABSTRACT,
  PERSONS.FIO,
  KATPODR.NAME

from
  KATPODR,
  PERSONS,
  APPENDIX
where
((
  PERSONS.GALDEP == KATPODR.NREC AND
  PERSONS.NREC == APPENDIX.PERSON(NOINDEX)
))
and
(
  persons.APPDATE <> 0 and
  persons.DISDATE = 0 and
  KATPODR.KOD <> '5' and
  APPENDIX.ABSTRACT <> 'Фотография'
);

Добавлено: 07 ноя 2008, 14:57
Дарья
Вариант от k_vit немного не подходит Выводится список тех сотрудников, для которых есть запись в таблице APPENDIX, но это не фотография. А нужно еще подцепить тех людей, с которыми вообще не связана ни одна запись из APPENDIX. В MS SQL, MySQL, Oracle знаю как, а вот в Pervasive нет...

Добавлено: 07 ноя 2008, 15:20
Дарья
edward_K писал(а):да все течет все меняется - вот и join добавили. тыды надо бы left outer join но outer не нашел.
по старинке вот так
from persons, appendix // обязательно
where ((
PERSONS.NREC == APPENDIX.PERSON
and 'Фотография' == APPENDIX.ABSTRACT (noindex)
)) and not isvalidall(tnAppendix)
Не идет что-то, ругается на преобразование типов

Добавлено: 07 ноя 2008, 16:41
Nikos
Так работает:
select TABNMB, PERSONS.FIO
from persons, appendix // обязательно
where ((
PERSONS.NREC == APPENDIX.PERSON (noindex)
and 'Фотография' == APPENDIX.ABSTRACT (noindex)
)) and not isvalidall(tnAppendix);