|
Несколько вложенных запросов | ☑ | ||
---|---|---|---|---|
0
St-Anger
11.01.17
✎
18:00
|
Добрый день.
Запрос состоит из 2х вложенных запросов. |ВЫБРАТЬ | ВложенныйЗапрос.ДатаПроверки КАК ДатаПроверки, | ВложенныйЗапрос1.ДатаПечати КАК ДатаПечати |ИЗ | (ВЫБРАТЬ ПЕРВЫЕ 1 | ЗаказПокупателяВремяПечати.ДатаПечати КАК ДатаПроверки | ИЗ | Документ.ЗаказПокупателя.ВремяПечати КАК ЗаказПокупателяВремяПечати | ГДЕ | ЗаказПокупателяВремяПечати.Ссылка = &Док | И ЗаказПокупателяВремяПечати.ПечатнаяФорма = "Проверен" | | УПОРЯДОЧИТЬ ПО | ДатаПроверки) КАК ВложенныйЗапрос, | (ВЫБРАТЬ ПЕРВЫЕ 1 | ЗаказПокупателяВремяПечати.ДатаПечати КАК ДатаПечати | ИЗ | Документ.ЗаказПокупателя.ВремяПечати КАК ЗаказПокупателяВремяПечати | ГДЕ | ЗаказПокупателяВремяПечати.Ссылка = &Док | И ЗаказПокупателяВремяПечати.ПечатнаяФорма = "На склад" | | УПОРЯДОЧИТЬ ПО | ДатаПечати) КАК ВложенныйЗапрос1 |"; Если результат одного вложенного запроса пустой, то и общий результат пустой. Хотя результат второго вложенного запроса не пустой. |
|||
1
Волшебник
модератор
11.01.17
✎
18:01
|
соедини их конструкцией ОБЪЕДИНИТЬ ВСЕ
|
|||
2
St-Anger
11.01.17
✎
18:08
|
(1) каким образом, если у меня вложенные запросы?
|
|||
3
Мимохожий Однако
11.01.17
✎
18:12
|
(0) В чём цель сего творения? Попробуй модные пакетные.
|
|||
4
mkalimulin
11.01.17
✎
18:13
|
(0) Умножение на 0 дает 0. Ты в курсе?
|
|||
5
Джинн
11.01.17
✎
18:14
|
(0) Хрень какая-то :(
|
|||
6
mehfk
11.01.17
✎
18:15
|
(0) https://ru.wikipedia.org/wiki/Пустое_множество
|
|||
7
St-Anger
11.01.17
✎
18:21
|
(3) Есть табличная часть в документе заказ, в которую записываются строки с разным значением "ПечатнаяФорма" и разным значением даты (типа протоколирование). Мне нужно выбрать от туда самые ранние значения по определенным значениям "ПечатнаяФорма".
|
|||
8
St-Anger
11.01.17
✎
18:22
|
(4) а где идет перемножение?
|
|||
9
Alexandr_U1982
11.01.17
✎
18:24
|
(8)Если не указано соединение между таблица, то СУБД выполняет декартово произведение таблиц(множеств).
|
|||
10
mehfk
11.01.17
✎
18:25
|
||||
11
St-Anger
11.01.17
✎
18:26
|
(10) не открывается
|
|||
12
Мимохожий Однако
11.01.17
✎
18:26
|
Я не вижу смысла использовать вложенные запросы. Пакеты - наше всё ))
|
|||
13
St-Anger
11.01.17
✎
18:27
|
(12) мусорные пакеты? )))
|
|||
14
mehfk
11.01.17
✎
18:30
|
(11) К Лефмихалыч обратись
|
|||
15
St-Anger
11.01.17
✎
18:33
|
Сделал так, но как-то не кошерно выходит. Результаты от запросов в разных строках.
|ВЫБРАТЬ ПЕРВЫЕ 1 | ЗаказПокупателяВремяПечати.ДатаПечати КАК ДатаПечати, | NULL КАК ДатаПроверки |ИЗ | Документ.ЗаказПокупателя.ВремяПечати КАК ЗаказПокупателяВремяПечати |ГДЕ | ЗаказПокупателяВремяПечати.Ссылка = &док | И ЗаказПокупателяВремяПечати.ПечатнаяФорма = "На склад" | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ ПЕРВЫЕ 1 | NULL, | ЗаказПокупателяВремяПечати.ДатаПечати |ИЗ | Документ.ЗаказПокупателя.ВремяПечати КАК ЗаказПокупателяВремяПечати |ГДЕ | ЗаказПокупателяВремяПечати.Ссылка = &док | И ЗаказПокупателяВремяПечати.ПечатнаяФорма = "Проверен" | |УПОРЯДОЧИТЬ ПО | ДатаПечати |"; |
|||
16
VladZ
11.01.17
✎
18:34
|
(0) Что за бред?
|
|||
17
Мимохожий Однако
11.01.17
✎
18:35
|
(13) Да.
|
|||
18
Мимохожий Однако
11.01.17
✎
18:35
|
А еще , я слышал, есть временные таблицы
|
|||
19
St-Anger
11.01.17
✎
18:35
|
(16) какие будут предложения?
|
|||
20
St-Anger
11.01.17
✎
18:36
|
(18) пробовал, такой же результат.
|
|||
21
mehfk
11.01.17
✎
18:36
|
(15) Оберни в подзапрос и выбери максимум каждого поля.
|
|||
22
VladZ
11.01.17
✎
18:37
|
(19) А что нужно в итоге получить?
|
|||
23
Мимохожий Однако
11.01.17
✎
18:37
|
Делай тогда перебором ТЧ
|
|||
24
St-Anger
11.01.17
✎
18:38
|
(23) хотелось одним запросом красиво сделать
|
|||
25
St-Anger
11.01.17
✎
18:38
|
(22) (7)
|
|||
26
Мимохожий Однако
11.01.17
✎
18:40
|
(20) Покажи этот вариант
|
|||
27
VladZ
11.01.17
✎
18:41
|
(25) Тогда вариант (21)
|
|||
28
St-Anger
11.01.17
✎
18:44
|
(26)
"ВЫБРАТЬ ПЕРВЫЕ 1 | ЗаказПокупателяВремяПечати.ДатаПечати КАК ДатаПечати |ПОМЕСТИТЬ втДатаПечати |ИЗ | Документ.ЗаказПокупателя.ВремяПечати КАК ЗаказПокупателяВремяПечати |ГДЕ | ЗаказПокупателяВремяПечати.Ссылка = &док | И ЗаказПокупателяВремяПечати.ПечатнаяФорма = ""На склад"" | |УПОРЯДОЧИТЬ ПО | ДатаПечати |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ ПЕРВЫЕ 1 | ЗаказПокупателяВремяПечати.ДатаПечати КАК ДатаПроверки |ПОМЕСТИТЬ втДатаПроверки |ИЗ | Документ.ЗаказПокупателя.ВремяПечати КАК ЗаказПокупателяВремяПечати |ГДЕ | ЗаказПокупателяВремяПечати.Ссылка = &док | И ЗаказПокупателяВремяПечати.ПечатнаяФорма = ""Проверен"" | |УПОРЯДОЧИТЬ ПО | ДатаПроверки |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | втДатаПечати.ДатаПечати, | втДатаПроверки.ДатаПроверки |ИЗ | втДатаПечати КАК втДатаПечати, | втДатаПроверки КАК втДатаПроверки |; | |//////////////////////////////////////////////////////////////////////////////// |УНИЧТОЖИТЬ втДатаПечати |; | |//////////////////////////////////////////////////////////////////////////////// |УНИЧТОЖИТЬ втДатаПроверки"; |
|||
29
Мимохожий Однако
11.01.17
✎
18:46
|
Почему Выбрать первые? В первую таблицу выбери различные и определи максимальную таблицу, а потом её соедини с максимальными датами.
|
|||
30
Фрэнки
11.01.17
✎
18:49
|
по моему тс издевается над нами.
ему выше разжевали, что разные таблицы в одном запросе нужно соединять, а в коде снова влеплено без соединения |
|||
31
mehfk
11.01.17
✎
18:51
|
Можно вообще в самом первом запросе из (0) вот к этому ЗаказПокупателяВремяПечати.ДатаПечати КАК ДатаПроверки
применить какую-нибудь агрегатную функцию :) |
|||
32
St-Anger
11.01.17
✎
18:53
|
(30) не,не издеваюсь. это был старый код до подсказок.
|
|||
33
St-Anger
11.01.17
✎
18:54
|
(31) эммм..так у нас все равно будет пустой результат, что с агрегатной, что без.
|
|||
34
Фрэнки
11.01.17
✎
18:56
|
сделай Левое соединение с условием ИСТИНА
А поскольку в обоих табличках всего по одной строчке, то поля окажутся в одной строке |
|||
35
Фрэнки
11.01.17
✎
18:58
|
в конструкторе, когда две таблички подзапросов выбраны на первой закладке, перейди на связи (это вторая) и соедини их с условием произвольным ИСТИНА
|
|||
36
mehfk
11.01.17
✎
19:00
|
(33) Ну-ну
|
|||
37
St-Anger
13.01.17
✎
10:23
|
Вот такая конструкция отлично отрабатывает:
"ВЫБРАТЬ | ВложенныйЗапрос.ДатаПечати, | ВложенныйЗапрос1.ДатаПроверки |ИЗ | (ВЫБРАТЬ ПЕРВЫЕ 1 | ЗаказПокупателяВремяПечати.ДатаПечати КАК ДатаПечати | ИЗ | Документ.ЗаказПокупателя.ВремяПечати КАК ЗаказПокупателяВремяПечати | ГДЕ | ЗаказПокупателяВремяПечати.Ссылка = &Док | И ЗаказПокупателяВремяПечати.ПечатнаяФорма = ""На склад"" | | УПОРЯДОЧИТЬ ПО | ЗаказПокупателяВремяПечати.ДатаПечати) КАК ВложенныйЗапрос | ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ПЕРВЫЕ 1 | ЗаказПокупателяВремяПечати.ДатаПечати КАК ДатаПроверки | ИЗ | Документ.ЗаказПокупателя.ВремяПечати КАК ЗаказПокупателяВремяПечати | ГДЕ | ЗаказПокупателяВремяПечати.Ссылка = &Док | И ЗаказПокупателяВремяПечати.ПечатнаяФорма = ""Проверен"" | | УПОРЯДОЧИТЬ ПО | ЗаказПокупателяВремяПечати.ДатаПечати) КАК ВложенныйЗапрос1 | ПО (ИСТИНА)" |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |