|
|
|
Оптимален ли запрос? | ☑ | ||
|---|---|---|---|---|
|
0
zak555
17.04.13
✎
13:38
|
есть Справочник3 с реквизитами шапки Реквизит1, Реквизит2, Реквизит3
есть так же табличная часть ТабличнаяЧасть1 с реквизитами Реквизит1 (ссылка на справочник2), Реквизит2 (строка) нужно вывести все реквизиты шапки справочника3 и колонку с реквизитом Реквизит2 из ТЧ, если Реквизит1 из ТЧ равен некому параметру парам, а если не равен -- пустую строку вот собственно запрос : ВЫБРАТЬ Справочник3.Ссылка, Справочник3.Код, Справочник3.Наименование, Справочник3.Реквизит1, Справочник3.Реквизит2, Справочник3.Реквизит3, ЕСТЬNULL(Справочник3ТабличнаяЧасть1.Реквизит2, "") КАК РеквизитКоторыйНужноПолучить ИЗ Справочник.Справочник3 КАК Справочник3 ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Справочник3.ТабличнаяЧасть1 КАК Справочник3ТабличнаяЧасть1 ПО Справочник3ТабличнаяЧасть1.Ссылка = Справочник3.Ссылка И Справочник3ТабличнаяЧасть1.Реквизит1 = &парам оптимален ли он? |
|||
|
1
Лефмихалыч
17.04.13
✎
13:39
|
начать с того, что запрос вернет туеву хучу дублей
|
|||
|
2
zak555
17.04.13
✎
13:40
|
(1) почему дублей ?
и при каких условий ? |
|||
|
3
zak555
17.04.13
✎
13:45
|
забыл главное: у одного элемента Справочник3 в ТЧ не может быть двух одинаковых значений в Реквизит1
|
|||
|
4
DS
17.04.13
✎
13:52
|
А почему бы сразу не обратиться к таблице ТЧ?
|
|||
|
5
zak555
17.04.13
✎
13:53
|
(4) выборка шапки написана на много строк
т.е. не хочется менять что уже написано, а хочется дописать вывод "колонки" |
|||
|
6
acsent
17.04.13
✎
13:54
|
а разве как то можно по другому?
|
|||
|
7
zak555
17.04.13
✎
13:56
|
(6) вдруг через временные таблицу/индексируемые поля и т.д.
|
|||
|
8
Рэйв
17.04.13
✎
13:58
|
(0)У тебя же в Таб части есть поле Ссылка.
Выбирай прямо из ТС и через ссылку доставай реквизиты шапки. и никаких соединений не надо, только условие |
|||
|
9
Рэйв
17.04.13
✎
13:59
|
ТС = Таб Часть
|
|||
|
10
zak555
17.04.13
✎
13:59
|
(8) см. в (5)
|
|||
|
11
Escander
17.04.13
✎
14:00
|
(8) что будет неявным обращением к дургой таблице со всеми вытекающими
|
|||
|
12
Рэйв
17.04.13
✎
14:03
|
(11)Ну да.
|
|||
|
13
Лефмихалыч
17.04.13
✎
14:52
|
(11) да и хер бы с ней. Другое дело, что результат будет не таким, какой автору нужен - ему левое соежинение нужно, а если только к ТЧ обращаться, то будет внутреннее
|
|||
|
14
zak555
17.04.13
✎
14:54
|
Лефмихалыч ты что имел ввиду в (1)
|
|||
|
15
Лефмихалыч
17.04.13
✎
14:55
|
Я бы еще попробовал во временную таблицу выгрести из ТЧ все такие пары Ссылка, Реквизит2, для которых условие выполняется, а соединял со справочником уже эту ВТ.
(14) в свете (3) не актуально |
|||
|
16
Лефмихалыч
17.04.13
✎
15:01
|
(15) только в этом случае не пустую строку в ЕСТЬNULL() совать надо, а пустую ссылку того же типа, что и реквизит2, тогда в ВТ будет только одна колонка, а не три под Реквизит2
|
|||
|
17
Escander
17.04.13
✎
16:21
|
(15) от ВТ толку при соединении 2 таблиц практичски бестолку... тем более что там условие связи попало в индекс
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |