powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / FB2.5 на IBExpert(XX) и CBuilder - туплю с запросом по дате
5 сообщений из 5, страница 1 из 1
FB2.5 на IBExpert(XX) и CBuilder - туплю с запросом по дате
    #37369703
triceraptors
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток всем !
Маленькое лирическое отступление: я НЕ программист хоть и умею на Сях корябать, SQL подучил по необходимости...

Собсно вводная: есть база :) сотрудников некой СКУД из которой нужно раз в неделю выколупывать данные для отчета начальству ;) ( скорость значения не имеет, ибо выборка происходит когда никто не работает, по выходным)
есть шесть таблиц, нужных нам-первичные:STAFF, STAFF_CARDS, STAFF_REF
и вторичные: APPOINT_REF, SUBDIV_REF, STAFF_INFO_DATA_STR
все они родные для базы
описание таблиц
STAFF - основная
STAFF_CARDS - данные карт-пропусков (может быть по несколько на человека)
STAFF_REF - таблица ссылок на следующие две о подразделении и должности, и может содержать до №уя записей о перемещениях и назначениях на каждого
APPOINT_REF - здесь подразделения
SUBDIV_REF - тут должностя
STAFF_INFO_DATA_STR - специфичные комменты от меня для начальника :)

вот сам запрос работающий в ЭКСперте и билдере :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
create view WORKED_VIEW (
    ID,
    END_DAY,
    FIO,
    FOTO,
    USDAT,
    COMMENTARY,
    FINED)
as
select STAFF_CARDS.IDENTIFIER as ID, STAFF_CARDS.DATE_END as END_DAY, STAFF.PORTRET as FOTO,
       trim(STAFF.LAST_NAME) || ' ' || trim(STAFF.FIRST_NAME) || ' ' || trim(STAFF.MIDDLE_NAME) as FIO,
       trim(SUBDIV_REF.DISPLAY_NAME) || ' ' || trim(APPOINT_REF.DISPLAY_NAME) as USDAT,
       trim(STAFF_INFO_DATA_STR.INFO_DATA) as COMMENTARY/*, max(STAFF_REF.DATE_ACTION) as FINED*/

from STAFF
join STAFF_REF on (STAFF.ID_STAFF = STAFF_REF.STAFF_ID)
join APPOINT_REF on (STAFF_REF.APPOINT_ID = APPOINT_REF.ID_REF)
join SUBDIV_REF on (STAFF_REF.SUBDIV_ID = SUBDIV_REF.ID_REF)
join STAFF_CARDS on (STAFF.ID_STAFF = STAFF_CARDS.STAFF_ID)
join STAFF_INFO_DATA_STR on ((STAFF_INFO_DATA_STR.REF_ID =  1264276 ) and (STAFF_INFO_DATA_STR.STAFF_ID = STAFF.ID_STAFF))

where ((STAFF.PORTRET is not null) and
      (STAFF.DELETED =  0 ) and
      (STAFF_CARDS.PROHIBIT =  0 ) and
      (STAFF.VALID =  1 ))

/*group by FIO*/
;


и так пашет Выдает нужные по дате ! НО здесь нет остальных нужных данных :(
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE VIEW WORKED_VIEW(
    STAFFID,
    DATES)
AS
select trim( staff.LAST_NAME) || ' ' || trim( staff.FIRST_NAME) || ' ' || trim( staff.MIDDLE_NAME) as staffid,
      max( staff_ref.date_action ) as dates
from  staff join staff_ref on (staff.id_staff = staff_ref.staff_id)
where (STAFF.PORTRET is not null)
group by staffid
;


Проблема заключается в следующем: Раньше в STAFF_REF был флажок отмечающий строку с текущими данными, нынче он выброшен ибо последние данные и есть действительные И ! вот этот момент меня сильно напрягает ибо приходится по дате отсекать в своей проге, хоть по времени не затратно, просто обидно, даже зная что перемудрил с самим запросом

Проще говоря: Снимаю коммент с МАКС(ДАТА) требует груп бай, даю груп бай, вообще абзац
пожалуйста пните в правильном направлении и подскажите можно ли эту страшную конструкцию упростить (тримы не трогать :) остальное в меру агрессивности )
...
Рейтинг: 0 / 0
FB2.5 на IBExpert(XX) и CBuilder - туплю с запросом по дате
    #37369717
tetxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторвот этот момент меня сильно напрягает ибо приходится по дате отсекать в своей проге, хоть по времени не затратно, просто обидно, даже зная что перемудрил с самим запросом, требует груп бай, даю груп бай, вообще абзацЕсли я правильно понял этот поток сознания...
Код: plaintext
1.
2.
3.
4.
select trim( staff.LAST_NAME) || ' ' || trim( staff.FIRST_NAME) || ' ' || trim( staff.MIDDLE_NAME) as staffid,
    ,(select first  1  staff_ref.date_action from staff_ref where staff.id_staff = staff_ref.staff_id) as dates
from  staff
where (STAFF.PORTRET is not null)
...
Рейтинг: 0 / 0
FB2.5 на IBExpert(XX) и CBuilder - туплю с запросом по дате
    #37371782
triceraptors
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Снова всем здравствуйте !
---КУСЬ tetxxЕсли я правильно понял этот поток сознания...
КУСЬ ---
Вы почти верно поняли мой технический бред :)
Просто устал бороться с самой системой СКУДа, своей прогой и начальством, которому( полагаю все знают) надо все еще вчера и за спасибо...

НО все-таки мне нужны данные из и вторичные: APPOINT_REF, SUBDIV_REF, STAFF_INFO_DATA_STR
Проще говоря нужна полная информация на данный момент( на период запроса)
при подключении этих таблиц мне сообщается - типа ошибка 104 или -parsing error-
А добывать их при вторичном проходе (нынешний процесс) как-то не комильфо, ведь со временем могут захотеть устроить и выборку сейчас и здесь (почему и выдумываю как немного ускорить и/или упростить процесс)

ЗЫ. Описание таблиц могу выложить, если это сильно поможет

ЗЗЫ. А также буду немеряно признателен за ссылки на действительно толковые учебники ( и бумажные особенно ! )
...
Рейтинг: 0 / 0
FB2.5 на IBExpert(XX) и CBuilder - туплю с запросом по дате
    #37372801
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
FB2.5 на IBExpert(XX) и CBuilder - туплю с запросом по дате
    #37382869
triceraptors
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем не заморачиваясь сделал выборку в два захода, спасибо за участие .... :)
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / FB2.5 на IBExpert(XX) и CBuilder - туплю с запросом по дате
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]