|
Соединение в запросе по условию NULL | ☑ | ||
---|---|---|---|---|
0
marinell
19.04.13
✎
16:35
|
Помогите, пожалуйста, туплю.
Есть запрос на 2 таблицы (обе по проводкам БУ), их нужно соединить так, чтобы слева было все, а справа только NULL. Суть: если в одном документе только проводка по Дт 91.02, то выводить, а если проводка Дт91.02 сочетается с проводкой Кт91.01, то в лес. Вот запрос упрощенно: | ВЫБРАТЬ | ОборотыРасход.СубконтоДт1, | ОборотыРасход.СуммаОборот | ИЗ | РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт( | &ДатаНачало, | &ДатаКонец, | Регистратор, | СчетДт В ИЕРАРХИИ(ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ПрочиеРасходы)), | &МассивВС) КАК ОборотыРасход | Левое СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт( | &ДатаНачало, | &ДатаКонец, | Регистратор, | , | , | СчетКт В ИЕРАРХИИ(ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ПрочиеДоходы)), | &МассивВС) КАК ОборотыДоход | ПО ОборотыРасход.Регистратор = ОборотыДоход.Регистратор | И ОборотыРасход.СубконтоДт1 = ОборотыДоход.СубконтоКт1 И ОборотыРасход.СубконтоДт2 = ОборотыДоход.СубконтоКт2 Пробовала варианты: ЕСТЬNULL(ОборотыДоход.СуммаОборот, 0) = 0 //условие вообще игнорируется ОборотыДоход.СуммаОборот = 0 и ОборотыДоход.СуммаОборот = NULL //в этот кусок запроса вообще не заходит. Соединение по условию? В общем, гугление тоже ничего не дало интересного, надеюсь на последнее мистопристанище.... Спасибо! |
|||
1
Wobland
19.04.13
✎
16:37
|
говори ГДЕ есть нулл. всё не читал
|
|||
2
Wobland
19.04.13
✎
16:38
|
гугление, кстати, довольно быстро и внятно говорит, что любая операция с нуллом даёт ложь/хрень
|
|||
3
wowik
19.04.13
✎
16:39
|
ОборотыДоход.СуммаОборот ЕСТЬ NULL - так работает?
|
|||
4
fisher
19.04.13
✎
16:42
|
Можно еще помедитировать для лучшего понимания на
ВЫБРАТЬ ВЫБОР КОГДА NULL = NULL ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ |
|||
5
marinell
19.04.13
✎
16:44
|
(3) работает так же, как и ЕСТЬNULL(ОборотыДоход.СуммаОборот, 0) = 0. То есть, пофиг ему на условие - выводит все подряд
|
|||
6
Wobland
19.04.13
✎
16:45
|
(5) сравнение с нуллом делается спецоператором(!) ЕСТЬ
|
|||
7
jsmith82
19.04.13
✎
16:46
|
дело вообще не в нулл
|
|||
8
jsmith82
19.04.13
✎
16:47
|
не проще из одной таблицы тянуть?
|
|||
9
Wobland
19.04.13
✎
16:47
|
кстати, да. где СчётДт=нужный И СчётКт=нужный2
|
|||
10
marinell
19.04.13
✎
16:51
|
Нет, нельзя тянуть из одной таблицы.
Проще говоря, есть 2 документа. Проводки в 1: ДтХХ - Кт91.01 Дт91.02 - Кт68.02 Проводки во 2: Дт91.02 - Кт68.02 Если я буду тянуть из одной таблицы, я получу проводки: 1:Дт91.02 - Кт68.02 2:Дт91.02 - Кт68.02 А мне надо только ту, которая идет из документа "самостоятельно": 2:Дт91.02 - Кт68.02 |
|||
11
marinell
19.04.13
✎
16:52
|
(+10) Поэтому и обороты по регистратору
|
|||
12
jsmith82
19.04.13
✎
16:56
|
а если поставить так
выбрать * |
|||
13
marinell
19.04.13
✎
17:01
|
Вообще все выбирать, что ли? А зачем? Мне нужна выборка по определенному условию, все-то у меня и так выбирается...
|
|||
14
Aprobator
19.04.13
✎
17:12
|
(0) ответ в (1).
|
|||
15
Alex Cheerful
19.04.13
✎
17:24
|
Добавь условие ГДЕ ЕСТЬ NULL и будет тебе счастье...
|
|||
16
sapphire
19.04.13
✎
17:35
|
(0)
ВЫБРАТЬ ОборотыРасход.СубконтоДт1 ,ОборотыРасход.СуммаОборот ИЗ РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт( &ДатаНачало, &ДатаКонец, Регистратор, СчетДт В ИЕРАРХИИ(ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ПрочиеРасходы)), &МассивВС) КАК ОборотыРасход WHERE (ОборотыРасход.СубконтоДт1,ОборотыРасход.СубконтоДт2) NOT IN ( SELECT ОборотыДоход.СубконтоКт1 ,ОборотыДоход.СубконтоКт2 FROM РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт( &ДатаНачало, &ДатаКонец, Регистратор, , , СчетКт В ИЕРАРХИИ(ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ПрочиеДоходы)), &МассивВС) КАК ОборотыДоход ) |
|||
17
Classic
19.04.13
✎
17:53
|
Что тебе именно получать надо?
|
|||
18
marinell
22.04.13
✎
09:46
|
(16) Чудесно, сработало, спасибо!!!
Спасибо всем огромное! |
|||
19
marinell
22.04.13
✎
10:26
|
(15)
ГДЕ ЕСТЬ NULL тоже дает нужный результат, непонятно, почему он не давал его в пятницу... наверное, на то она и пятница ))) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |