|
v7: помогите с SQL запросом | ☑ | ||
---|---|---|---|---|
0
6aToH
13.12.12
✎
12:04
|
1с 7 ТиС и 1С++
Нужны строки Табличной части из двух документов (Реализация и Возврат) Можно даже просто на SQL потом под 1С++ сам переделаю. Получается 3 таблицы у нас: _1SJOURN - журнал всех доокументов DH1827 - Строки реализации ВР3486 - Строки возврата Нужно выбрать все строки документов Реализации и Возврата за период. Как будет выглядеть в запросе FROM? лучше сразу весь запрос. |
|||
1
mikecool
13.12.12
✎
12:05
|
у тебя есть 1с++, если ты не знаешь, как ею взять таблицы и строки, то как собрался переделывать?
смотри в $Документ и в $ДокументСтроки |
|||
2
6aToH
13.12.12
✎
12:05
|
там два запроса будет да?
|
|||
3
Ёпрст
13.12.12
✎
12:05
|
обычный селект и юнион алл
смотри в соседней ветке пример |
|||
4
6aToH
13.12.12
✎
12:05
|
(1) это я понял
мне не понятно как связать эти таблицы |
|||
5
Ёпрст
13.12.12
✎
12:06
|
(4) через union all
|
|||
6
ADirks
13.12.12
✎
12:10
|
|SELECT
| |FROM | ЖурналДокументов жДок | LEFT JOIN ( | SELECT IDDoc, ... FROM докТЧРеализация | UNION ALL | SELECT IDDoc, ... FROM докТЧВозврат | ) докТЧ ON докТЧ.IDDoc = жДок.IDDoc |
|||
7
6aToH
13.12.12
✎
12:14
|
пошел пробовать
|
|||
8
МихаилМ
13.12.12
✎
12:56
|
"все строки документов" = журнал не нужен
|
|||
9
6aToH
13.12.12
✎
12:57
|
(8) ссылка на документ нужна
|
|||
10
МихаилМ
13.12.12
✎
13:04
|
(9)
ссылка есть в таблицах тч |
|||
11
КонецЦикла
13.12.12
✎
13:05
|
(9) В DT есть ссылка на документ, иначе как опеределить какому документу принадлежит табличная часть? :)
|
|||
12
Ёпрст
13.12.12
✎
13:06
|
(11)ему один хрен журнал нужен будет для типизации документа и отбора по периоду.
|
|||
13
ADirks
13.12.12
✎
13:13
|
запросы по документам, где был бы не нужен журнал - оч.большая редкость
|
|||
14
Mikeware
13.12.12
✎
13:14
|
(8) ему ж наверняка еще тип документа нужен будет для разбора, да и период для отбора. Возможно, еще и контрагент-договор...
|
|||
15
Mikeware
13.12.12
✎
13:15
|
(12) Ну, оттипизироваться-то можно и без журнала...
|
|||
16
6aToH
13.12.12
✎
13:29
|
не получается у меня всеравно
SELECT Zhur.IDDOC AS Doc, Zhur.IDDOCDEF AS Doc_Vid FROM _1SJOURN Zhur LEFT OUTER JOIN (SELECT IDDOC, SP6908 AS TMC, SUM(SP3476) AS colvo, SUM(SP3479) AS SUMMA FROM DT3486 UNION ALL SELECT IDDOC, SP1824 AS TMC, SUM(SP1817) AS colvo, SUM(SP1820) AS SUMMA FROM DT1827) DOCTCH ON Zhur.IDDOC = DOCTCH.IDDOC WHERE (Zhur.DOCNO = 'AL00000063') GROUP BY Zhur.IDDOC, Zhur.IDDOCDEF, DOCTCH.IDDOC чего тут не так??? только не пинайте иди читай SQL как будет время первым делом начну читать. |
|||
17
Mikeware
13.12.12
✎
13:30
|
(16)
"-мужик, ты пилу-то наточи! --некогда мне точить, мне пилить надо!" © |
|||
18
6aToH
13.12.12
✎
13:31
|
(17) ага!!! )))))
|
|||
19
Ёпрст
13.12.12
✎
13:31
|
(16) ну во-первух, поля iddoc нет в _1sjourn в скуле
|
|||
20
6aToH
13.12.12
✎
13:31
|
(17) ты мне с этим помоги распилить твоей пилой а я свою наточу
|
|||
21
1Сергей
13.12.12
✎
13:32
|
(16) у тебя выбираются ВСЕ документы
|
|||
22
Ёпрст
13.12.12
✎
13:32
|
а ёпт, ты же в шапке глядишь..
|
|||
23
Ёпрст
13.12.12
✎
13:32
|
точнее, в тЧ
|
|||
24
Mikeware
13.12.12
✎
13:32
|
(16) и нахрена тебе юзать внутренние имена полей, если у тебя есть уже метапарсер?
|
|||
25
6aToH
13.12.12
✎
13:33
|
(24) да потому что с прямым разобраться не могу, а с метопарсером еще хуже %)
|
|||
26
МихаилМ
13.12.12
✎
13:33
|
(19) есть поле IDDOC
в _1SJOURN |
|||
27
6aToH
13.12.12
✎
13:33
|
тут бы без ошибок написать! (24)
|
|||
28
Mikeware
13.12.12
✎
13:33
|
(25) с ним легче.
|
|||
29
Ёпрст
13.12.12
✎
13:34
|
(26) ага
|
|||
30
6aToH
13.12.12
✎
13:34
|
(23) как это нет?
|
|||
31
Serginio1
13.12.12
✎
13:35
|
||||
32
Serginio1
13.12.12
✎
13:36
|
||||
33
6aToH
13.12.12
✎
13:37
|
||||
34
ADirks
13.12.12
✎
13:41
|
запихни запрос в QA - и тебе скажут чё там не так
а там всё не так :) 1. в подзапросе Sum() не надо 2. где эти колонки в основном селект-листе? Вот там-то как раз Sum() и д.б. |
|||
35
Mikeware
13.12.12
✎
13:42
|
(33) открой для себя 1CQA/
|
|||
36
6aToH
13.12.12
✎
13:42
|
(34) сейчас попробую
|
|||
37
ADirks
13.12.12
✎
13:42
|
ну и
GROUP BY DOCTCH.IDDOC это тоже круто, ага |
|||
38
6aToH
13.12.12
✎
13:43
|
(37) это я понял
|
|||
39
Ёпрст
13.12.12
✎
13:43
|
|select ???.iddoc [??? $????????]
| ,???.iddocdef ???_??? | ,??.???????????? [???????????? $??????????.????????????] | ,sum(??.??????????) ?????????? | ,sum(??.?????) ????? | |from _1sjourn ??? (nolock) |left join | ( | select | ???.iddoc iddoc, | $???.???????????? ????????????, | $???.?????????? ??????????, | $???.????? ????? | from $??????????????.?????????? ??? (nolock) | union all | select | ???.iddoc iddoc, | $???.????????????, | $???.??????????, | $???.????? | from $??????????????.??????????? ??? (nolock) | ) ?? on ??.iddoc = ???.iddoc |where ???.iddocdef in($????????????.??????????,$????????????.???????????) |group by ???.iddoc ,???.iddocdef,??.???????????? |
|||
40
Ёпрст
13.12.12
✎
13:43
|
|select Жур.iddoc [Док $Документ]
| ,Жур.iddocdef Док_вид | ,ТЧ.Номенклатура [Номенклатура $Справочник.Номенклатура] | ,sum(ТЧ.Количество) Количество | ,sum(ТЧ.Сумма) Сумма | |from _1sjourn Жур (nolock) |left join | ( | select | Док.iddoc iddoc, | $Док.Номенклатура Номенклатура, | $Док.Количество Количество, | $Док.Сумма Сумма | from $ДокументСтроки.Реализация Док (nolock) | union all | select | Док.iddoc iddoc, | $Док.Номенклатура, | $Док.Количество, | $Док.Сумма | from $ДокументСтроки.Поступление Док (nolock) | ) ТЧ on ТЧ.iddoc = Жур.iddoc |where Жур.iddocdef in($ВидДокумента.Реализация,$ВидДокумента.Поступление) |group by Жур.iddoc ,Жур.iddocdef,ТЧ.Номенклатура |
|||
41
Ёпрст
13.12.12
✎
13:44
|
так примерно
|
|||
42
ADirks
13.12.12
✎
13:44
|
и граждане, оформляйте запросы красиво, как (40) например - большая часть вопросов отвалится сразу
|
|||
43
МихаилМ
13.12.12
✎
13:48
|
(40)
тогда уж сворачивать по дублям в подзапросе. |
|||
44
Ёпрст
13.12.12
✎
13:50
|
(43) а смысл ?
быстрее врят ли будет (план не видел, но думаю, так оно и есть) |
|||
45
МихаилМ
13.12.12
✎
13:55
|
(0)
если таблица вся то минус одно поле группировки даст эфект + распараллеливание union all смысл - правильно писать а не кое-как. т.е. быстродейтвие - не главное. |
|||
46
МихаилМ
13.12.12
✎
13:55
|
(45) -> 44
|
|||
47
trad
13.12.12
✎
14:00
|
кстати в (40) ошибка - метапарсер не разберет имена полей разных таблиц с одинаковым алиасом.
но, с учетом (41), не в упрек Ёпрст. Так, наводка для ТС. |
|||
48
Ёпрст
13.12.12
✎
14:01
|
ну не знаю, всегда стремился к последнему, т.е к скорости вполнения запроса
|
|||
49
Ёпрст
13.12.12
✎
14:01
|
(47) имеешь в виду в самом юнионе ?
т.е лучше Док2 писать ? |
|||
50
6aToH
13.12.12
✎
14:02
|
(47) я уже задал разный
Ёпрст4 спасибо большое. |
|||
51
6aToH
13.12.12
✎
14:02
|
(40) том примере многое стало понятней
|
|||
52
6aToH
13.12.12
✎
14:03
|
(49) если два разных документа и под одним "Док" выдавал ошибку
|
|||
53
Ёпрст
13.12.12
✎
14:03
|
Это и с ВиДДокумента я всегда путаю, когда там надо ВидДокумента36 использовать
:)) так что, тоже проверь |
|||
54
6aToH
13.12.12
✎
14:04
|
|from $ДокументСтроки.Реализация Док (nolock)
|from $ДокументСтроки.Поступление Док (nolock) переделал на |from $ДокументСтроки.Реализация Док (nolock) |from $ДокументСтроки.Поступление Док2 (nolock) |
|||
55
Ёпрст
13.12.12
✎
14:05
|
(54) в селекте не забудь еще
|
|||
56
6aToH
13.12.12
✎
14:05
|
(55) конечно ))))
|
|||
57
Ёпрст
13.12.12
✎
14:05
|
и это еще почитай
http://www.1cpp.ru/forumfiles/Attachments/mod_002.zip |
|||
58
ADirks
13.12.12
✎
14:09
|
(43) Не стоит этого делать. Не разу не видел, чтобы от group by и даже where в подобном подзапросе была польза. А вот как оптимизатору башню сносит - видел.
Причина очень проста: ты думаешь, что умный, а у оптимизатора есть статистики. |
|||
59
6aToH
13.12.12
✎
14:19
|
(53) а в чем разница??? ВидДокумента и ВидДокумента36
в mod_002.zip не слова про это! разница между DBF и SQL что-ли??? по крайней мере в mod_zip там везде "ВидДокумента" используется в примерах. |
|||
60
Mikeware
13.12.12
✎
14:21
|
(59) ВидДокумента - число. а ВидДокумента36 - это же число в 36-ричном коде
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |