|
Соединить две таблицы с желательным условием | ☑ | ||
---|---|---|---|---|
0
leshiy_SV
04.12.19
✎
17:07
|
Добрый день.
Подскажите, как соединить две таблицы по условию, чтоб из второй таблицы взять желательно только то, что будет равно "Красный". Если такого нет, то взять любой. |ТАБ1 | ---------- |роза | |ромашка | |Тюльпан | |ТАБ2 | ---------- |роза |Красный| |роза |Желтый | |ромашка |Белый | |Тюльпан |Красный| |Тюльпан |Желтый | |Тюльпан |Синий | Чтобы в итоге получилось |роза |Красный| |ромашка |Белый | |Тюльпан |Красный| |
|||
1
sevod
04.12.19
✎
17:15
|
Делаем временную таблицу из ТАБ2 (ВТ), с отбором по красному.
Дальше к ТАБ1 левое соединение ВТ и ТАБ2. isnull(ВТ, Таб2) |
|||
2
Ёпрст
04.12.19
✎
17:16
|
2 запроса в юнион, в первом, соединение по ромашке и цвету, во втором только по ромашке, дальше группируешь и все, можешь еще приоритеты задать в запросах
|
|||
3
leshiy_SV
05.12.19
✎
12:34
|
ВЫБРАТЬ
Цветы.Наименование КАК Наименование, ЦветыРазноцветные.Цвет КАК Цвет ПОМЕСТИТЬ ВТ_Цветы_Красные ИЗ Цветы КАК Цветы ЛЕВОЕ СОЕДИНЕНИЕ ЦветыРазноцветные КАК ЦветыРазноцветные ПО Цветы.Наименование = ЦветыРазноцветные.Наименование И (ЦветыРазноцветные.Цвет = ЗНАЧЕНИЕ(Справочник.Цвет.Красный)) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_Цветы_Красные.Наименование КАК Наименование, ВЫБОР КОГДА ВТ_Цветы_Красные.Цвет ЕСТЬ NULL ТОГДА ЦветыРазноцветные.Цвет ИНАЧЕ ВТ_Цветы.ФормаОбучения КОНЕЦ КАК ВТ_Цветы_Красные.Цвет ИЗ ВТ_Цветы_Красные КАК ВТ_Цветы_Красные ЛЕВОЕ СОЕДИНЕНИЕ ЦветыРазноцветные КАК ЦветыРазноцветные ПО ВТ_Цветы_Красные.Наименование = ЦветыРазноцветные.Наименование И (ЦветыРазноцветные.Цвет <> ЗНАЧЕНИЕ(Справочник.Цвет.Красный)) УПОРЯДОЧИТЬ ПО Наименование АВТОУПОРЯДОЧИВАНИЕ |
|||
4
sevod
05.12.19
✎
13:57
|
Вот это
ВЫБОР КОГДА ВТ_Цветы_Красные.Цвет ЕСТЬ NULL ТОГДА ЦветыРазноцветные.Цвет ИНАЧЕ ВТ_Цветы.ФормаОбучения КОНЕЦ КАК ВТ_Цветы_Красные.Цвет пишется одной строкой ЕСТЬNULL(ЦветыРазноцветные.Цвет, ВТ_Цветы.ФормаОбучения) что бы быстрее писать, не переключая раскладку, пишут ISNULL. Если не понял, загугли ЕСТЬNULL() для 1С. |
|||
5
sevod
05.12.19
✎
14:12
|
"ЕСТЬNULL(ЦветыРазноцветные.Цвет, ВТ_Цветы.ФормаОбучения)" А может наоборот :)
"ЕСТЬNULL(ВТ_Цветы.ФормаОбучения, ЦветыРазноцветные.Цвет)" Но думаю поймешь. " ВТ_Цветы.ФормаОбучения" это откуда? У тебя этот запрос вообще работает? У тебя соединение во втором запросе правильное? Я без конструктора плохо читаю запросы. |
|||
6
leshiy_SV
05.12.19
✎
14:56
|
" ВТ_Цветы.ФормаОбучения" это откуда?
Это хвост из 1С: Университет. :) Просто взял такой простой пример (цвета, цветочки), чтоб легче объяснить, что мне нужно. На самом деле там - студенты, статусы и прочие поля. Запрос в реальности работает. Сначала в таблицу с определенными студентами добавляю данные, которые есть у очников, а вторым присоединением через ISNULL() добавляю данные, которые есть у заочников. Суть запроса если студент учится и на очном и на заочном, то в приоритете в итоговую таблицу попадали данные по очной форме. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |