|
Помогите пожалуйста составить запрос | ☑ | ||
---|---|---|---|---|
0
Иоган
15.04.16
✎
12:09
|
в 1с есть таблица:
_____________ |1 | красный| |2 | null | |3 | null | |4 | синий | |5 | null | |6 | белый | |7 | null | |8 | null | ------------- Как с помощью запроса вывести следующее? _____________ |1 | красный| |2 | красный| |3 | красный| |4 | синий | |5 | синий | |6 | белый | |7 | белый | |8 | белый | ------------- Важно: цвета могут быть любые, заранее значение не известно, количество NULLов также может быть любое, размер таблицы может быть любой Спасибо большое |
|||
1
Necessitudo
15.04.16
✎
12:41
|
Соединяй таблицу саму с собой через тета-соединение.
|
|||
2
butterbean
15.04.16
✎
12:43
|
(0) как ты получил такую таблицу? если запросом, то там и заполняй
|
|||
3
ЛЮС
15.04.16
✎
12:45
|
Где же такую бадагу спрашивают?
ВЫБРАТЬ Т1.Н, Максимум(Т2.Н) КАК Н2 Поместить ВТ ИЗ Таб Как Т1 ВНУТРЕННЕЕ СОЕДИНЕНИЕ Таб Как Т2 По Т2.Н >= Т1.Н И НЕ Т2.Ц ЕСТЬ NULL ; Выбрать ВТ.Н1, Т3.Ц ИЗ ВТ КАК ВТ ВНУТРЕННЕЕ СОЕДИНЕНИЕ Таб как Т3 ПО ВТ.Н2 = Т3.Н |
|||
4
Иоган
15.04.16
✎
13:57
|
(3) Это один знакомый из Екатеринбурга подкинул, ему при устройстве на работу задавали такую задачу. Я попытался разобрать, но знаний не хватило, не получилось. Вот и решил воспользоваться помощью формчан.
Спасибо за подсказку, однако, может быть я ошибаюсь, но мне кажется что условие По Т2.Н >= Т1.Н И НЕ Т2.Ц ЕСТЬ NULL Выдаст на выходе _____________ |1 | белый | |2 | белый | |3 | белый | |4 | белый | |5 | белый | |6 | белый | |7 | белый | |8 | белый | разъясните пожалуйста, если я не прав |
|||
5
Иоган
15.04.16
✎
14:00
|
(3) (4) Точнее так:
|1 | красный| |2 | белый | |3 | белый | |4 | синий | |5 | белый | |6 | белый | |7 | белый | |8 | белый | Т.е. все нули заменит на белый |
|||
6
catena
15.04.16
✎
14:57
|
Выбрать ТТ.НомСтр,ТТ.т, ЕстьNULL(ТТ2.т,ТТ.т) из (Выбрать Т1.НомСтр,Т1.т,Максимум(Т2.НомСтр) из Т1 как Т1
Левое соединение Т1 как Т2 по Т1.НомСтр>=Т2.НомСтр и не Т2.т есть NULL и Т1.т есть NULL Сгруппировать по Т1.НомСтр,Т1.т ) как ТТ левое соединение Т1 как ТТ2 по ТТ.НомСтр1 = ТТ2.НомСтр |
|||
7
Иоган
15.04.16
✎
18:35
|
(6) что-то не выходит (
|
|||
8
kittystark
16.04.16
✎
08:31
|
выбрать 1 как номер , "красный" как цвет
поместить т1 объединить выбрать 2 , null объединить выбрать 3 , null объединить выбрать 4 , "синий" объединить выбрать 5 , null объединить выбрать 6 , "белый" объединить выбрать 7 , null объединить выбрать 8 , null ; выбрать * поместить т2 из т1 где не цвет есть null; выбрать * поместить т3 из т1 левое соединение т2 по т1.номер > т2.номер и т1.цвет есть null; выбрать номер, максимум(номер1) поместить т4 из т3 сгруппировать по номер; выбрать т4.номер,цвет из т4 левое соединение т2 по номер1 = т2.номер или т4.номер = т2.номер |
|||
9
Ildarovich
16.04.16
✎
10:14
|
А вот еще через коррелированный запрос:
ВЫБРАТЬ
|
|||
10
Ildarovich
16.04.16
✎
10:33
|
А вот такой хитрый "регулярный" запрос может заполнить до семи пропусков в таблице:
ВЫБРАТЬ
Семь - потому, что 4 * 2 - 1 = 7. Дальше последняя секция может повторяться с числами 8, 16, 32, 64 и так далее для заполнения 15, 31, 63, 127 пропусков соответственно. С некоторыми оговорками на очень больших объемах данных (тысячи строк) этот подход будет быстрее, чем в (8), поскольку не использует тэта-соединений. |
|||
11
Zhuravlik
16.04.16
✎
10:37
|
В закладки
|
|||
12
Иоган
16.04.16
✎
11:51
|
(10) (9) ООО! Вот это супер! Спасибо большое! я думаю вы на инфостарте под тем же логином пишите. Читал ваши публикации. Буду стремиться к вашему уровню!
|
|||
13
wertyu
16.04.16
✎
12:04
|
(9) ЕСТЬNULL(Выше.Цвет, Дано.Цвет)
местами поменять |
|||
14
Ildarovich
16.04.16
✎
13:10
|
(13) нет разницы. Там получается одно из двух всегда NULL.
|
|||
15
rsv
16.04.16
✎
13:47
|
Ипользование после По гирлянд подзапросов .... Приведет к тому что ждать соединения таблиц на обьеме можно дооолго и не дождаться вообще
|
|||
16
Ildarovich
16.04.16
✎
14:17
|
(15) да, с использованием коррелированных запросов есть такой риск. Зависит от СУБД. Но иногда по скорости, наоборот, может быть очень большой выигрыш. Посмотрите, например, задачу 5 в http://catalog.mista.ru/public/427180/ . Там приведен подробный анализ с демонстрацией планов выполнения запросов.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |