|
Запрос на пятницу. | ☑ | ||
---|---|---|---|---|
0
AlexxJ
28.11.14
✎
11:11
|
Столкнулся со странным поведением запроса
ВЫБРАТЬ Закупки.Регистратор КАК Регистратор, КурсыВалют.Курс ИЗ РегистрНакопления.Закупки КАК Закупки ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют ПО НачалоПериода(Закупки.Период,день) = КурсыВалют.Период ГДЕ КурсыВалют.Валюта = &Валюта на выходе получаем ничего. Регистр Курс имеет запись только на 1980 год. Если убрать условие по валюте, то все нормально. Выводит все записи, курс NULL. Че за фигня? |
|||
1
Ёпрст
28.11.14
✎
11:12
|
ПО НачалоПериода(Закупки.Период,день) = НачалоПериода(КурсыВалют.Период,День)
|
|||
2
18_plus
28.11.14
✎
11:13
|
всё правильно работает
|
|||
3
vicof
28.11.14
✎
11:13
|
Тема всплывает с завидной регулярностью
|
|||
4
Cube
28.11.14
✎
11:13
|
(0) Условие засунь в соединения
|
|||
5
John83
28.11.14
✎
11:13
|
(1) у курса валюты и так дата на начало дня
|
|||
6
Cube
28.11.14
✎
11:13
|
(3) +100
|
|||
7
AlexxJ
28.11.14
✎
11:14
|
(1) пофиг пусто
|
|||
8
John83
28.11.14
✎
11:14
|
(0) может ТиИ?
|
|||
9
User_Agronom
28.11.14
✎
11:14
|
(0)...Если убрать условие по валюте, то все нормально...
Тут собака порылась? |
|||
10
AlexxJ
28.11.14
✎
11:14
|
(6) в чем секрет тогда?
(8) на 2х базах пробовал, сервер и файловая |
|||
11
18_plus
28.11.14
✎
11:15
|
(0) а на валюту регистратора накласть?
|
|||
12
AlexxJ
28.11.14
✎
11:15
|
(9) хз, по идее должен вывести записи из рег.Закупки с курсом NULL
|
|||
13
18_plus
28.11.14
✎
11:15
|
(10) секрет в кривом запросе
|
|||
14
18_plus
28.11.14
✎
11:15
|
(12) неверно
|
|||
15
Ёпрст
28.11.14
✎
11:15
|
тогда Где замени на И
|
|||
16
AlexxJ
28.11.14
✎
11:15
|
(11) да пофиг, важен сам прецендент
|
|||
17
ДенисЧ
28.11.14
✎
11:16
|
"Регистр Курс имеет запись только на 1980 год"
А регистраторы какого года? |
|||
18
AlexxJ
28.11.14
✎
11:16
|
(14) поясни
|
|||
19
18_plus
28.11.14
✎
11:17
|
(16)
а) выведи результат запроса без условия б) глазами отбери записи, которые соответствуют твоему условию |
|||
20
AlexxJ
28.11.14
✎
11:18
|
(15) хм. А почему? условие должно применяться только к таблице Курсы и если там ничего то поле должно быть NULL
|
|||
21
AlexxJ
28.11.14
✎
11:19
|
(19) все соответствуют. Соединение левое, все записи из регистра запасы должны попасть в выборку полюбому. Или нет????
|
|||
22
AlexxJ
28.11.14
✎
11:20
|
(21) *регистр закупки
|
|||
23
AlexxJ
28.11.14
✎
11:20
|
(17) размазаны с 2008 по 2014
|
|||
24
Любопытная
28.11.14
✎
11:22
|
(20) Кому должно?
|
|||
25
AlexxJ
28.11.14
✎
11:23
|
(24) мне, в основном ))
|
|||
26
vicof
28.11.14
✎
11:23
|
(0) Автор, ты не только про порядок выполнения операторов в запросе не слышал, так и про параметры виртуальных таблиц?
|
|||
27
Любопытная
28.11.14
✎
11:24
|
(20) Сначала выбирается общая таблица по соединениям, потом срабатывает условие. И если в результирующей таблице нет записей, соответствующих условию, то пусто у тебя в результате запроса
|
|||
28
AlexxJ
28.11.14
✎
11:24
|
(26) много пафоса, мало сути
|
|||
29
Любопытная
28.11.14
✎
11:24
|
+ (27) Порядок закладок в конструкторе запросов имеет некоторый смысл :)
|
|||
30
18_plus
28.11.14
✎
11:25
|
(28) суть: матчасть учи
|
|||
31
AlexxJ
28.11.14
✎
11:26
|
ладно в общем и целом понятно, всем спасибо
|
|||
32
Hmster
28.11.14
✎
11:27
|
(0) КурсыВалют.Валюта = &Валюта
указано не в соединении. Полсе соединения КурсыВалют.Валюта имеет значение NULL любые операции с которым есть ЛОЖЬ. ПОнял? |
|||
33
Ёпрст
28.11.14
✎
11:27
|
(20) Потому, что условие нужно накладывать в месте присоединения таблиц, а не на результат соединения. В этом случае, ты получаешь неявный иннер джоин.
|
|||
34
AlexxJ
28.11.14
✎
11:29
|
(32) угу, спс
(33) соединения - зло )) |
|||
35
AlexxJ
28.11.14
✎
11:49
|
(29) блин, вот про порядок никогда не думал. вро де в фоксе и аксесе немного по другому запросы работают
|
|||
36
hhhh
28.11.14
✎
12:22
|
(35) в общем NULL не равно &Валюта, в этом все беды.
|
|||
37
Ёпрст
28.11.14
✎
12:31
|
(35)Неправда, там всё тоже самое.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |