|
СКД, проблема отбора в запросе | ☑ | ||
---|---|---|---|---|
0
bolobol
10.04.18
✎
09:37
|
Доброго дня!
Запрос в СКД, типа: ВЫБРАТЬ 5 КАК Оценка, ИСТИНА КАК Хорошая ПОМЕСТИТЬ ХорошиеОценки ; ВЫБРАТЬ Оценки.Оценка, ЕСТЬNULL(ХорошиеОценки, ложь) КАК Хорошая ИЗ Оценки ЛЕВОЕ ХорошиеОценки ПО Оценка = Оценка Ставлю отбор в пользовательском режиме Хорошие = Истина - отличный выбор! Ставлю Хорошие = ложь - результат: любые оценки, а не только не хорошие. Как поправить, чтоб работало и почему не работает, как задумано? Спасибо! |
|||
1
Rovan
гуру
10.04.18
✎
09:43
|
Чем заполнена "Оценки" ?
|
|||
2
Rovan
гуру
10.04.18
✎
09:45
|
Чтобы не было даже намека на возможные разночтения я пишу с КАК и с именами таблиц:
Оценки КАК Оценки ЛЕВОЕ СОЕДИНЕНИЕ ХорошиеОценки КАК ХорошиеОценки ПО Оценки.Оценка = ХорошиеОценки.Оценка |
|||
3
bolobol
10.04.18
✎
09:46
|
ВЫБРАТЬ
5 КАК Оценка ПОМЕСТИТЬ Оценки ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 4 ; ВЫБРАТЬ 5 КАК Оценка, ИСТИНА КАК Хорошая ПОМЕСТИТЬ ХорошиеОценки ; ВЫБРАТЬ Оценки.Оценка, ЕСТЬNULL(ХорошиеОценки.Хорошая, ложь) КАК Хорошая ИЗ Оценки ЛЕВОЕ СОЕДИНЕНИЕ ХорошиеОценки ПО Оценки.Оценка = ХорошиеОценки.Оценка |
|||
4
Адинэснег
10.04.18
✎
09:53
|
садись, два :-D
|
|||
5
Малыш Джон
10.04.18
✎
09:54
|
(3) потому что ты параметр вводишь:
ВЫБРАТЬ 5 КАК Оценка ПОМЕСТИТЬ Оценки ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 4 ; ВЫБРАТЬ 5 КАК Оценка, ИСТИНА КАК Хорошая ПОМЕСТИТЬ ХорошиеОценки ГДЕ ИСТИНА = &П ; ВЫБРАТЬ Оценки.Оценка КАК Оценка, ЕСТЬNULL(ХорошиеОценки.Хорошая, ЛОЖЬ) КАК Хорошая ИЗ Оценки КАК Оценки ЛЕВОЕ СОЕДИНЕНИЕ ХорошиеОценки КАК ХорошиеОценки ПО Оценки.Оценка = ХорошиеОценки.Оценка ГДЕ ЕСТЬNULL(ХорошиеОценки.Хорошая, ЛОЖЬ) = &П |
|||
6
unregistered
10.04.18
✎
09:55
|
Поле "Хорошая" есть и во временной таблице ХорошиеОценки и в во втором запросе пакета.
Переименуй. Или в настройках компановки определи на какие поля можно накладывать условия. ИМХО, твое условие Хорошие = ложь ложиться на первый запрос пакета. В результате имеем пустую временную таблицу ХорошиеОценки, а это в свою очередь приводит к тому, что в результате второго запроса всегда Хорошая - ложь (так как соединяться не с чем и всегда выполняется условие ЕСТЬNULL. |
|||
7
unregistered
10.04.18
✎
09:58
|
+ к (6): Вообще убери поле Хорошая из первого запроса. Оно там не нужно. Например так.
ВЫБРАТЬ 5 КАК Оценка ПОМЕСТИТЬ ХорошиеОценки ; ВЫБРАТЬ Оценки.Оценка, НЕ ХорошиеОценки ЕСТЬ NULL КАК Хорошая ИЗ Оценки ЛЕВОЕ ХорошиеОценки ПО Оценка = Оценка |
|||
8
unregistered
10.04.18
✎
09:59
|
уточнение к (7)
ВЫБРАТЬ 5 КАК Оценка ПОМЕСТИТЬ ХорошиеОценки ; ВЫБРАТЬ Оценки.Оценка, НЕ ХорошиеОценки.Оценка ЕСТЬ NULL КАК Хорошая ИЗ Оценки ЛЕВОЕ ХорошиеОценки ПО Оценка = Оценка |
|||
9
mehfk
10.04.18
✎
09:59
|
(0) А ты сними галочку "Автозаполнение" и расставь скд-конструкции в нужных местах сам.
|
|||
10
bolobol
10.04.18
✎
10:10
|
Спасибо!
Действительно, отбор накладывается на всё одноимённое, а не только на конечный выбор. Второй вариант - тоже работает! Спасибо! |
|||
11
bolobol
10.04.18
✎
10:13
|
(9) С Автозаполнением не стал разбираться, это ещё нужно погружаться, чем без него полезнее станет СКД. Слава багам, пока не пригождалось)
Спасибо! |
|||
12
mehfk
10.04.18
✎
10:27
|
(11) Так и будешь всю жизнь на форумах спрашивать.
|
|||
13
bolobol
10.04.18
✎
11:32
|
Ясен пень!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |