Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема 1sqlite, __1s_crdoc, самый ранний childid (число прочтений - 1431 )
Анатолий
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 25
Зарегистрирован: 18. Сентября 2008
1sqlite, __1s_crdoc, самый ранний childid
26. Марта 2015 :: 10:45
Печать  
Ситуация:
есть документ НашДокумент с реквизитом Контрагент, участвующим в графе отбора ДокументыКонтрагента.
Задача: отобрать проведенные документы НашДокумент за период так, что в выборку должны попасть только документы, являющиеся самыми ранними (первыми) по Контрагенту. При определении первого документа по графе отбора учитываются только проведенные.
Вопрос: как в 1sqlite-запросе оптимально получить выборку CHILDID из __1s_crdoc, для которых CHILDDATE + CHILDTIME минимальное в пределах MDID + PARENTVAL?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: 1sqlite, __1s_crdoc, самый ранний childid
Ответ #1 - 30. Марта 2015 :: 11:52
Печать  
подзапрос с минимумом по дате
или коррелированный подзапрос в селекте и там лимит 1 и order by
  
Наверх
 
IP записан
 
Анатолий
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 25
Зарегистрирован: 18. Сентября 2008
Re: 1sqlite, __1s_crdoc, самый ранний childid
Ответ #2 - 31. Марта 2015 :: 14:03
Печать  
SELECT
*
FROM
__1s_crdoc Таб1
WHERE
Таб1.MDID = :ГрафаОтбора.ДокументыКонтрагента
AND Таб1.CHILDID IN
(
SELECT
Таб2.CHILDID
FROM
__1s_crdoc Таб2
LEFT JOIN
[Журнал] Таб3
ON
Таб3.IDDOC = Таб2.CHILDID
WHERE
Таб2.MDID = :ГрафаОтбора.ДокументыКонтрагента
AND Таб2.PARENTVAL = Таб1.PARENTVAL
AND Таб3.CLOSED&1 = 1
ORDER BY
Таб2.CHILDDATE, Таб2.CHILDTIME ASC
LIMIT 1
)

так или можно лучше?
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать