![]() |
|
v7: Прямой запрос, нулевые остатки | ☑ | ||
---|---|---|---|---|
0
Eeakie
21.05.14
✎
15:34
|
Добрый день.
Как получить нулевые остатки по регистру через ВТ остатков? Делаю так: |
|||
1
Eeakie
21.05.14
✎
15:36
|
Упс.
+(0) |select | Товары.id as [Товар $Справочник.Товары], |from | $Справочник.Товары as Товары with (nolock) | left join | $РегистрОстатки.ОстаткиТоваровОбщ(,, Фирма = :Фирма and Склад = :Склад, Товар, ОстатокТовара) as ОТО on ОТО.Товар = Товары.id |where | ОТО.ОстатокТовараОстаток = 0"; Ничего не даёт. На ОТО.ОстатокТовараОстаток > 0 регирует нормально. В чём причина? |
|||
2
Mikeware
21.05.14
✎
15:36
|
джойнить со справочником.
|
|||
3
Wobland
21.05.14
✎
15:37
|
(1) во вхере. оно убивает отсутствующее
|
|||
4
Mikeware
21.05.14
✎
15:38
|
where isnull(ОТО.ОстатокТовараОстаток,0) = 0";
|
|||
5
Eeakie
21.05.14
✎
15:41
|
(2) Не нравится мне (пока что, видимо) джойнить внутри ;)
(3) Понял. (4) Жесть... но взлетело. Спасибо. |
|||
6
Mikeware
21.05.14
✎
15:46
|
(5) 1. внутри не надо. и бестолку....
3. почему жесть? все логично. можешь заменить на where is null(ОТО.ОстатокТовараОстаток) |
|||
7
Eeakie
21.05.14
✎
15:50
|
(6) Только сейчас понял насколько это удобно.
|
|||
8
Ёпрст
гуру
21.05.14
✎
15:50
|
ну или на coalesce(ОТО.ОстатокТовараОстаток,0)=0
|
|||
9
Eeakie
21.05.14
✎
15:54
|
По наглядности больше нравится просто "<значение> is null".
|
|||
10
Eeakie
21.05.14
✎
15:56
|
(9) Оу. Так не отрабатывает.
|
|||
11
Eeakie
21.05.14
✎
16:07
|
(8) coalisce, кстати, тоже отличная штука.
|
|||
12
Eeakie
21.05.14
✎
16:10
|
(6), (8) а как проверить на пустоту, если значение строковое?
|
|||
13
trad
21.05.14
✎
16:12
|
(12) точно также - is null
|
|||
14
Eeakie
21.05.14
✎
16:15
|
(13) ошибку даёт:
Ошибка преобразования значения varchar "ВК-75-01 |
|||
15
Eeakie
21.05.14
✎
16:16
|
+(13) "ВК-75-01" это как раз значение, которое надо было проверить на пустоту.
|
|||
16
Ёпрст
гуру
21.05.14
✎
16:20
|
(14) дык isnull(твоёполе,'')=''
|
|||
17
trad
21.05.14
✎
16:21
|
(14) что то я сомневаюсь, что это связано с проверкой на null
запрос покажи |
|||
18
Eeakie
21.05.14
✎
16:22
|
(16) isnull($Товары.ПараметрЗагрузкиЦены, 0) = 0
Параметр - строка, 200 символов |
|||
19
Eeakie
21.05.14
✎
16:23
|
(17)
|select | Товары.id as [Товар $Справочник.Товары], | $Товары.ИнтенсивностьДвижения as ИД, | $Товары.Продажа0 as П0, | ОТО.ОстатокТовараОстаток as Остаток, | $Прайс.МинЦена as ЦенаМ, | $Прайс.Цена as ЦенаО, | $Прайс.Расч_руб as ЦенаР |from | $Справочник.Товары as Товары with (nolock) | inner join | $Справочник.Прайс_лист as Прайс with (nolock) ON $Прайс.Товар = Товары.id | left join | $РегистрОстатки.ОстаткиТоваровОбщ(,, Фирма = :Фирма and Склад = :Склад, Товар, ОстатокТовара) as ОТО on ОТО.Товар = Товары.id |where | ($Товары.ИнтенсивностьДвижения = 0 or $Товары.ИнтенсивностьДвижения = 3) and | ($Товары.Продажа0 = 1) and | isnull($Товары.ПараметрЗагрузкиЦены, 0) = 0 and | ($Прайс.ОсновнаяПозиция = 1) and | ($Прайс.МинЦена > 0 or $Прайс.Цена > 0 or $Прайс.Расч_руб > 0) and | isnull(ОТО.ОстатокТовараОстаток, 0) = 0 |order by | Товары.descr"; |
|||
20
Ёпрст
гуру
21.05.14
✎
16:24
|
ПараметрЗагрузкиЦены - Это строка ?
Какого ж х..ра ты её с числом сравниваешь ? |
|||
21
Eeakie
21.05.14
✎
16:26
|
(20) а вот и ответ. А с чем сравнить? Я понимаю что надо сравнивать с "". Вопрос в том, как это сделать правильнее.
|
|||
22
Ёпрст
гуру
21.05.14
✎
16:26
|
(21) см (16)
|
|||
23
Ёпрст
гуру
21.05.14
✎
16:27
|
Только, достаточно так
$Товары.ПараметрЗагрузкиЦены = '' |
|||
24
Ёпрст
гуру
21.05.14
✎
16:27
|
там null и так не будет, никогда
|
|||
25
Eeakie
21.05.14
✎
16:28
|
(23) Тьфу. Всё, работает. Благодарю.
|
|||
26
trad
21.05.14
✎
16:29
|
тут $Товары.ПараметрЗагрузкиЦены нула быть не может
изнулить не имеет смысла |
|||
27
Eeakie
21.05.14
✎
17:25
|
Спасибо.
|
|||
28
Eeakie
23.05.14
✎
15:16
|
А если в условие забить сравнение двух остатков, типа А > Б?
Как в условие воткнуть чтобы не сравнивалась "пустота" с цифрой? Если А = 0 и Б = 1, то условие не срабатывает, т. к. А это не 0. |
|||
29
Eeakie
23.05.14
✎
15:18
|
Как-то непонятно. Даже самому ;)
А - остаток1; Б - остаток2; по условию Б должно быть больше А; в результат выборки не попадают такие варианты, когда А = 0 и Б = 1. Что изменить в условии? |
|||
30
Ёпрст
гуру
23.05.14
✎
15:20
|
(29)
isnull(остатокА,0)<isnull(остатокБ,0) |
|||
31
Eeakie
23.05.14
✎
15:20
|
(30) у меня еще как-то через case получилось :)
|
|||
32
ДенисЧ
23.05.14
✎
15:21
|
(31) Если в слове case изменить 4 буквы, то получится то место, через которое ты сделал...
|
|||
33
Eeakie
23.05.14
✎
15:23
|
(32) Хлеб = Пиво мне как-то больше нравилось...
|
|||
34
Eeakie
23.05.14
✎
15:23
|
(30) isnull(<условие>, 0) возвращает или 0 или значение больше 0? Я думал только как проверка на ноль.
|
|||
35
Eeakie
23.05.14
✎
15:24
|
+(34) всмысле, не значение больше нуля, а значение, которое проверяем.
|
|||
36
ДенисЧ
23.05.14
✎
15:24
|
(34) там не условие, а значение.
Может, ты книжку всё-таки прочтёшь? |
|||
37
Ёпрст
гуру
23.05.14
✎
15:29
|
||||
38
Eeakie
27.05.14
✎
14:56
|
|where
| ((Выборка.Кол1 + Выборка.Кол2 + Выборка.Кол3) <> Выборка.Кол4) Выборка.КолN - остатки. Почему, *****, такое то условие не катит? В результат попадают строки, типа: 0 12 0 12. Что не так делаю? |
|||
39
Eeakie
27.05.14
✎
14:57
|
|select
| Выборка.Товар as [Товар $Справочник.Товары], | sum(Выборка.Кол1) as Заказано, | sum(Выборка.Кол2) as ВРаботе, | sum(Выборка.Кол3) as ОкЗаказ, | sum(Выборка.Кол4) as Ожидание |from( | select ЗаявкиПоставщику.Товар | , ЗаявкиПоставщику.РезервТовараОстаток as Кол1 | , 0 as Кол2 | , 0 as Кол3 | , 0 as Кол4 | from $РегистрОстатки.ЗаявкиПоставщику(,, Фирма = :Фирма, Товар, РезервТовара) as ЗаявкиПоставщику | | union all | | select ПодготовкаЗаявок.Товар | , 0 as Кол1 | , ПодготовкаЗаявок.КоличествоОстаток as Кол2 | , 0 as Кол3 | , 0 as Кол4 | from $РегистрОстатки.ПодготовкаЗаявок(,, Фирма = :Фирма, Товар, Количество) as ПодготовкаЗаявок | | union all | | select ТоварВЗаказе.Товар | , 0 as Кол1 | , 0 as Кол2 | , ТоварВЗаказе.КоличествоОстаток as Кол3 | , 0 as Кол4 | from $РегистрОстатки.ТоварВЗаказе(,, Фирма = :Фирма, Товар, Количество) as ТоварВЗаказе | | union all | | select Ожидания.Товар | , 0 as Кол1 | , 0 as Кол2 | , 0 as Кол3 | , Ожидания.КоличествоОстаток as Кол4 | from $РегистрОстатки.Ожидания(,, Фирма = :Фирма, Товар, Количество) as Ожидания | )as Выборка |where | ((Выборка.Кол1 + Выборка.Кол2 + Выборка.Кол3) <> Выборка.Кол4) |group by | Выборка.Товар"; |
|||
40
Mikeware
27.05.14
✎
14:58
|
"шо, опять?"©
|
|||
41
Mikeware
27.05.14
✎
14:58
|
(39) откой для себя having
|
|||
42
Eeakie
27.05.14
✎
14:58
|
(40) Не смешно. Думал что опять хрень с возвращением "пустого" значения, а не нуля. Попробовал через isnull() - нифига.
|
|||
43
Eeakie
27.05.14
✎
14:58
|
(41) Оу...
|
|||
44
Eeakie
27.05.14
✎
15:00
|
млять...
|
|||
45
Eeakie
27.05.14
✎
15:01
|
Что ж я такой деревянный. Не в первый раз ведь уже. Спасибо.
|
|||
46
Mikeware
27.05.14
✎
15:05
|
(45) ну, значит ты всего наполовину деревянный. но сверху.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |