|
v7: "Пятничный" прямой запрос. | ☑ | ||
---|---|---|---|---|
0
zenon46
29.11.19
✎
16:19
|
Доброго вечера! Подскажите почему не срабатывает запрос.
Итак, есть в базе документ Комплектация у него два вида операции - Разборка и Сборка. Есть реквизит Номенклатура он есть как в шапке так и в ТЧ. Пытаюсь составить запрос который бы подсчитал, сколько доков Комплектация(Сборка) в ТЧ и Комплектация(Разборка) в Шапке, встречались по выбранной номенклатуре. Но срабатывает только что-то одно то что стоит первое в соединении с журналом. Кусок запроса в котором это делается для наглядности скриншот (https://prnt.sc/q3um9b) зеленым выделено то что не попало, если поменять в соединении местами, то станет наоборот: |LEFT JOIN( |SELECT | SUBSTRING(Жур.Date_Time_IDDoc, 1, 8) as [Дата], | coalesce($ДокВ.Номенклатура,$ДокКомплектацияТМЦРазборка.Номенклатура,$ДокКомплектацияСборка.Комплект) as [Товар], | count(coalesce(ДокВ.IDDOC,ДокКомплектацияТМЦРазборка.IDDOC,ДокКомплектацияСборка.IDDOC)) as [Приход] |FROM | _1SJourn AS Жур | LEFT JOIN $ДокументСтроки.ВозвратОтПокупателя as ДокВ ON ДокВ.IDDoc = Жур.IDDoc | LEFT JOIN $ДокументСтроки.КомплектацияТМЦ as ДокКомплектацияТМЦРазборка ON ДокКомплектацияТМЦРазборка.IDDoc = Жур.IDDoc | LEFT JOIN $Документ.КомплектацияТМЦ as ДокКомплектацияТМЦРазборкаШапка ON ДокКомплектацияТМЦРазборкаШапка.IDDoc = Жур.IDDoc | LEFT JOIN $Документ.КомплектацияТМЦ as ДокКомплектацияСборка ON ДокКомплектацияСборка.IDDoc = Жур.IDDoc | LEFT JOIN #TempTable as фильтрТоваров ON coalesce($ДокВ.Номенклатура,$ДокКомплектацияТМЦРазборка.Номенклатура,$ДокКомплектацияСборка.Комплект) = фильтрТоваров.val |WHERE | Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND | (Жур.iddocdef = $ВидДокумента.ВозвратОтПокупателя OR Жур.iddocdef = $ВидДокумента.КомплектацияТМЦ) AND | (($ДокКомплектацияТМЦРазборкаШапка.КодОперации = :ТипКомплектации) OR ($ДокКомплектацияСборка.КодОперации = :ТипКомплектации_1)) AND | Жур.Closed & 1 = 1 |GROUP BY | SUBSTRING(Жур.Date_Time_IDDoc,1,8), coalesce($ДокВ.Номенклатура,$ДокКомплектацияТМЦРазборка.Номенклатура,$ДокКомплектацияСборка.Комплект) Заранее откликнувшимся спасибо ! |
|||
1
Sserj
29.11.19
✎
16:43
|
Да нут тебя с твоим 2000-ым, там мозги надо напрягать, думать что сработает а что нет :)
А по факту сделай просто обхединением двух запросов отдельно по шапке и отдельно по табличной части. И быстрее будет и надежнее и вон тот непонятный возврат исчезнет. |
|||
2
zenon46
29.11.19
✎
16:44
|
(1) возврат тоже нужен ))
|
|||
3
palpetrovich
29.11.19
✎
16:45
|
(0) "составить запрос который бы подсчитал, сколько доков Комплектация(Сборка) в ТЧ и Комплектация(Разборка) в Шапке, встречались по выбранной номенклатуре."
а при чем здесь строки? |
|||
4
zenon46
29.11.19
✎
16:47
|
(3) а как выбрать номенклатуру из ТЧ не используя ДокументСтроки ?
|
|||
5
palpetrovich
29.11.19
✎
16:59
|
(4) наверное я не понимаю задачи, во-всяком сдлучае из описания в (0) - строки не нужны
зы: пытаться понять из текста запроса что нужно получить - не хочется |
|||
6
Sserj
29.11.19
✎
17:00
|
И кстати в твоем варианте все равно не учесть возможности нескольких позиций нужной номенклатуры в ТЧ. Т.е. один и тот же документ будет считаться несколько раз если в ТЧ несколько позиций из фильтра.
|
|||
7
Franchiser
гуру
29.11.19
✎
17:01
|
Так есть же Отладка(1)
|
|||
8
Franchiser
гуру
29.11.19
✎
17:03
|
Наверно тебе нужно определить еще связь с _1SJourn AS Жур2
|
|||
9
Sserj
29.11.19
✎
17:04
|
(7) Отладка то есть, только у него SQL2000 на котором что ни предложи то ни работает, то вроде как и работает но с другим синтаксисом.
|
|||
10
Ёпрст
29.11.19
✎
18:06
|
(0) дык хрень же получишь в итоге, это не количество доков будет хотя бы дистиникт в каунт пихай.. тогда что ле
|
|||
11
zenon46
29.11.19
✎
20:59
|
(1) надеюсь скоро перееду на 2008й (6) да я же написал это кусок запроса. (1) сделаю так, по моему, это самый простой вариант.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |