|
v7: JOIN в прямом запросе, не могу понять один момент... | ☑ | ||
---|---|---|---|---|
0
IgorA100
24.06.20
✎
13:21
|
Суть: Есть документ вида "__СканыДоков__", у которого имеется реквизит "Док" (документ). Нужно отобрать все документы, у которых в реквизите "Док" реквизит "Контрагент" = ВыбКонтрагент. Вроде плевое дело, но запутался...
Все документы по "ВыбКонтрагент" отбираю запросом используя графы отбора. Все документы вида "__СканыДоков__" тоже отбираю. А вот как эти два запроса сджойнить не могу понять :( Вот оба запроса:
Может первый SELECT * в первом запросе и лишний... |
|||
1
Ёпрст
24.06.20
✎
15:25
|
(0)
1.зачем тебе графа отбора ? Есть графа отборка Клиентос ? 2.Не видно вообще условия на клиентоса нигде |
|||
2
Ёпрст
24.06.20
✎
15:26
|
И нужно отобрать в финале _Сканы_Док ? или что ?
|
|||
3
Ёпрст
24.06.20
✎
15:27
|
+ твой реквизит Док, это реквизит чего ? Шапки ? Табличной части ? Тип какой ? <Документ> без вида ?
|
|||
4
Tihon_aka_kot
24.06.20
✎
15:35
|
Может тебе не join нужен а UNION ALL
Тогда в результат попадут все строки |
|||
5
IgorA100
24.06.20
✎
16:02
|
(1)
1. Да, графа отбора Контрагент есть. Для этого и использовал графы отбора. 2. Использую класс "ЗапросSQL". Вот добавление условия:
Данное условие рабочее. 3. Да, реквизит "Док" в шапке. Документ неопределенного вида, может быть любой. 4. В финале нужно отобрать все документы у которых Контрагент = ВыбКонтрагент И которые встречаются в реквизитах "Док" документов вида __СканыДоков__ и при этом еще получить еще из реквизита ТЧ документа __СканыДоков__ значения "Имя" и "Путь". (4) Фиг его знает. По факту, мне надо что бы в итоге получилось так, что: Если документ из второго запроса (ЖурналДокументов.IDDOC as [Док $Документ]) есть в первом запросе ($ДокументСканыДоков.Док as [Док $Документ]) то он попадал бы в выборку, если нет - не попадал бы в выборку. Т.е. Нас интересует все по клиенту "Вася Пупкин" Есть документ __СканыДоков__, в нем реквизит "Док" = "Вася Пупкин", тогда нам нужен сам "Док" (который может быть любого вида) и из документа __СканыДоков__ значения реквизитов из ТЧ "Имя" и Путь". Если в документе __СканыДоков__, реквизит "Док" = "Гриша Пупкин" - такой документ не нужен нам. |
|||
6
Ёпрст
24.06.20
✎
18:34
|
(5) запрос (1) + where $ДокументСканыДоков.Док in (select ГрафаОтбора.CHILDID from .....)
|
|||
7
IgorA100
24.06.20
✎
22:22
|
(6) Т.е вообще без использования "ЖурналДокументов" и без джойнов во внутреннем SELECT?
И возвращаемое внутренним селектом "ГрафаОтбора.CHILDID" будет документом? |
|||
8
Ёпрст
24.06.20
✎
22:25
|
(7) если период не нужен, то да, журнал не нужен
|
|||
9
tgu82
24.06.20
✎
22:29
|
(8) Это запрос только под SQL или под ДБФ тоже можно использовать?
|
|||
10
Ёпрст
24.06.20
✎
22:33
|
(9) в дбф тоже будет работать, только системные таблички без _, ну и для фокса или скульлайт синтаксис чутка разный
|
|||
11
Ёпрст
24.06.20
✎
22:34
|
и в журнале, полей дате_тайм_иддок в дбф нема, там дата в отдельном поле и иддок и время
|
|||
12
IgorA100
24.06.20
✎
22:47
|
(8) Скомбинировал запрос:
Запрос нифига не возвращает :( |
|||
13
IgorA100
24.06.20
✎
22:59
|
(8) $ДокументСканыДоков.Док - это типа: "17Y B5PS098"
А ГрафаОтбора.CHILDID - это типа: "B6LV098", т.е. без вида документа, да? И естественно запрос ничего не вернет :( |
|||
14
IgorA100
24.06.20
✎
23:22
|
Получается надо что бы внутренний SELECT вернул как-то значение "Вид+ГрафаОтбора.CHILDID"
|
|||
15
Ёпрст
24.06.20
✎
23:29
|
(13) where right($ДокументСканыДоков.Док,9) in
|
|||
16
Ёпрст
24.06.20
✎
23:31
|
И вот это че ?
AND %ГрафаОтбора.PARENTVAL |
|||
17
IgorA100
24.06.20
✎
23:33
|
(16) Для отбора по ВыбКонтрагент.
|
|||
18
IgorA100
24.06.20
✎
23:39
|
(15) О!!!!!!
Заработало!!!!!!! А почему обрезаем справа 9 символов? |
|||
19
Ёпрст
24.06.20
✎
23:41
|
(17) Так пиши хотя бы
AND ГрафаОтбора.PARENTVAL = :ВыбКонтрагент* если нужно еще и за период то так еще and ГрафаОтбора.Child_DATE_TIME BETWEEN :ДатаНачала AND :ДатаКонца~ |
|||
20
Ёпрст
24.06.20
✎
23:42
|
(18) Потому, что реквизиты неопределенного вида хранятся как id(13) - вид+iddoc
|
|||
21
Ёпрст
24.06.20
✎
23:42
|
+20 4+9=13
|
|||
22
Ёпрст
24.06.20
✎
23:42
|
На вот, ознакомься
http://www.script-coding.com/v77tables.html |
|||
23
Ёпрст
24.06.20
✎
23:44
|
ну или вот, с картинками
http://metaprog.co.ua/secrprog/doc_reg.html http://metaprog.co.ua/secrprog/opisanietabl.html#_1_2_4 |
|||
24
IgorA100
24.06.20
✎
23:53
|
(23) Спасибо ОГРОМНОЕ!!!
Да, вспомнил, читал, забыл.... :( (19) В общем да, так короче и понятней, чем использовать метод "ДобавитьУсловие" из класса "ЗапросSQL" |
|||
25
IgorA100
25.06.20
✎
00:04
|
(19) Только не
а
Да, когда больше 10лет ничего не писал, все забывается :( Еще раз огромное спасибо за помощь! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |