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

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Дарья
Посетитель
Сообщения: 37
Зарегистрирован: 18 авг 2008, 14:18
Откуда: Тюмень
Контактная информация:

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

Сообщение Дарья »

Не работает запрос!!! Необходимо получить список всех сотрудников, у которых нет фотографии (фильтр по работающим).
*****Ничего не выводит****************************
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)
));
Выводит так:
Название приложения Фамилия, Имя, Отчество

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

Как сделать фильтр по названию приложения?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

да все течет все меняется - вот и join добавили. тыды надо бы left outer join но outer не нашел.
по старинке вот так
from persons, appendix // обязательно
where ((
PERSONS.NREC == APPENDIX.PERSON
and 'Фотография' == APPENDIX.ABSTRACT (noindex)
)) and not isvalidall(tnAppendix)
k_vit
Постоянный обитатель
Сообщения: 143
Зарегистрирован: 09 авг 2006, 16:40
Откуда: Россия, Тюмень, ОАО "Сибирский Научно-Аналитический Центр"

Сообщение 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 <> 'Фотография'
);
Дарья
Посетитель
Сообщения: 37
Зарегистрирован: 18 авг 2008, 14:18
Откуда: Тюмень
Контактная информация:

Сообщение Дарья »

Вариант от k_vit немного не подходит Выводится список тех сотрудников, для которых есть запись в таблице APPENDIX, но это не фотография. А нужно еще подцепить тех людей, с которыми вообще не связана ни одна запись из APPENDIX. В MS SQL, MySQL, Oracle знаю как, а вот в Pervasive нет...
Последний раз редактировалось Дарья 07 ноя 2008, 15:21, всего редактировалось 1 раз.
Дарья
Посетитель
Сообщения: 37
Зарегистрирован: 18 авг 2008, 14:18
Откуда: Тюмень
Контактная информация:

Сообщение Дарья »

edward_K писал(а):да все течет все меняется - вот и join добавили. тыды надо бы left outer join но outer не нашел.
по старинке вот так
from persons, appendix // обязательно
where ((
PERSONS.NREC == APPENDIX.PERSON
and 'Фотография' == APPENDIX.ABSTRACT (noindex)
)) and not isvalidall(tnAppendix)
Не идет что-то, ругается на преобразование типов
Nikos
Местный житель
Сообщения: 577
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Томск

Сообщение Nikos »

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