![]() |
![]() |
![]() |
|
Сравнить таб. части без цикла | ☑ | ||
---|---|---|---|---|
0
John83
06.09.13
✎
16:43
|
Когда нам нужно сравнить две таблицы, то проблем нет - просто делаем полное соединение по всем колонкам.
Но что делать, если нужно сравнить ТЧ всех документов? В нижеприведенном примере через параметр задаем заказ и запрос выводит различия в ТЧ заказа и реализации (будем считать, что заведен только один заказ и одна реализация) и чтобы вывести эти различия по всем заказам, нужно этот запрос запихнуть в цикл. А как реализовать одним запросом? ВЫБРАТЬ ЗаказПокупателяТовары.Номенклатура, ЗаказПокупателяТовары.ХарактеристикаНоменклатуры, ЗаказПокупателяТовары.Ссылка ПОМЕСТИТЬ Заказ ИЗ Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары ГДЕ ЗаказПокупателяТовары.Ссылка = &Заказ ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РеализацияТоваровУслугТовары.Ссылка.Сделка, РеализацияТоваровУслугТовары.Номенклатура, РеализацияТоваровУслугТовары.ХарактеристикаНоменклатуры ПОМЕСТИТЬ Реализация ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары ГДЕ РеализацияТоваровУслугТовары.Ссылка.Сделка = &Заказ ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Заказ.Номенклатура, Заказ.ХарактеристикаНоменклатуры, Заказ.Ссылка ИЗ Заказ КАК Заказ ПОЛНОЕ СОЕДИНЕНИЕ Реализация КАК Реализация ПО Заказ.Номенклатура = Реализация.Номенклатура И Заказ.ХарактеристикаНоменклатуры = Реализация.ХарактеристикаНоменклатуры ГДЕ (Заказ.Ссылка ЕСТЬ NULL ИЛИ Реализация.Сделка ЕСТЬ NULL ) |
|||
1
salvator
06.09.13
✎
16:45
|
В (&МассивЗаказов)
|
|||
2
John83
06.09.13
✎
16:48
|
(1) даже если в соединение добавим "И Заказ.Ссылка = Реализация.Сделка" - будут соединяться все ТЧ
|
|||
3
John83
06.09.13
✎
16:49
|
в идеале сделать внутреннее соединение по сделке и полное по колонкам ТЧ
|
|||
4
palpetrovich
06.09.13
✎
16:51
|
точно нужно именно сравнить ТЧ? может достаточно типового отчета "Анализ заказа покупетеля"? там и отгружено и осталось и резерв и заказаноУпоставщика... :)
|
|||
5
John83
06.09.13
✎
16:52
|
(4) в реальной задаче ни заказ, ни реализация не участвуют
|
|||
6
palpetrovich
06.09.13
✎
16:53
|
+4 если-же все-таки хочется нетлеку делать, то в сто раз лучше анализировать РН ЗаказыПокупателей, чем документы :)
|
|||
7
palpetrovich
06.09.13
✎
16:54
|
(5) т.е. (0) - для примера?
|
|||
8
Sabbath
06.09.13
✎
16:54
|
(2) Может, сначала сделать подзапрос сопоставляющий заказы и реализации, потом к нему соединять ТЧ и проверять равенство?
|
|||
9
John83
06.09.13
✎
16:55
|
(7) да
|
|||
10
John83
06.09.13
✎
17:00
|
вот такой пример будет на много лучше и ближе к задаче, только вместо ТЧ "РаспределениеМатериалов" используется своя таб. часть
ВЫБРАТЬ ОтчетПроизводстваЗаСменуМатериалы.Ссылка, ОтчетПроизводстваЗаСменуМатериалы.Номенклатура, ОтчетПроизводстваЗаСменуМатериалы.Спецификация, ОтчетПроизводстваЗаСменуРаспределениеМатериалов.Ссылка КАК Ссылка1, ОтчетПроизводстваЗаСменуРаспределениеМатериалов.Номенклатура КАК Номенклатура1, ОтчетПроизводстваЗаСменуРаспределениеМатериалов.Спецификация КАК Спецификация1 ИЗ Документ.ОтчетПроизводстваЗаСмену.РаспределениеМатериалов КАК ОтчетПроизводстваЗаСменуРаспределениеМатериалов ПОЛНОЕ СОЕДИНЕНИЕ Документ.ОтчетПроизводстваЗаСмену.Материалы КАК ОтчетПроизводстваЗаСменуМатериалы ПО (ОтчетПроизводстваЗаСменуМатериалы.Ссылка = ОтчетПроизводстваЗаСменуРаспределениеМатериалов.Ссылка) И (ОтчетПроизводстваЗаСменуМатериалы.Номенклатура = ОтчетПроизводстваЗаСменуРаспределениеМатериалов.Номенклатура) И (ОтчетПроизводстваЗаСменуМатериалы.ВидВыпуска = ОтчетПроизводстваЗаСменуРаспределениеМатериалов.ВидВыпуска) И (ОтчетПроизводстваЗаСменуМатериалы.Заказ = ОтчетПроизводстваЗаСменуРаспределениеМатериалов.Заказ) И (ОтчетПроизводстваЗаСменуМатериалы.ЕдиницаИзмерения = ОтчетПроизводстваЗаСменуРаспределениеМатериалов.ЕдиницаИзмерения) И (ОтчетПроизводстваЗаСменуМатериалы.Коэффициент = ОтчетПроизводстваЗаСменуРаспределениеМатериалов.Коэффициент) И (ОтчетПроизводстваЗаСменуМатериалы.Количество = ОтчетПроизводстваЗаСменуРаспределениеМатериалов.Количество) И (ОтчетПроизводстваЗаСменуМатериалы.СерияНоменклатуры = ОтчетПроизводстваЗаСменуРаспределениеМатериалов.СерияНоменклатуры) И (ОтчетПроизводстваЗаСменуМатериалы.СтатьяЗатрат = ОтчетПроизводстваЗаСменуРаспределениеМатериалов.СтатьяЗатрат) И (ОтчетПроизводстваЗаСменуМатериалы.ХарактеристикаНоменклатуры = ОтчетПроизводстваЗаСменуРаспределениеМатериалов.ХарактеристикаНоменклатуры) И (ОтчетПроизводстваЗаСменуМатериалы.Спецификация = ОтчетПроизводстваЗаСменуРаспределениеМатериалов.Спецификация) И (ОтчетПроизводстваЗаСменуМатериалы.ЗаказВыпуска = ОтчетПроизводстваЗаСменуРаспределениеМатериалов.ЗаказВыпуска) И (ОтчетПроизводстваЗаСменуМатериалы.ПодразделениеНЗП = ОтчетПроизводстваЗаСменуРаспределениеМатериалов.ПодразделениеНЗП) И (ОтчетПроизводстваЗаСменуМатериалы.ПодразделениеОрганизацииНЗП = ОтчетПроизводстваЗаСменуРаспределениеМатериалов.ПодразделениеОрганизацииНЗП) И (ОтчетПроизводстваЗаСменуМатериалы.НоменклатурнаяГруппа = ОтчетПроизводстваЗаСменуРаспределениеМатериалов.НоменклатурнаяГруппа) И (ОтчетПроизводстваЗаСменуМатериалы.Ссылка = ОтчетПроизводстваЗаСменуРаспределениеМатериалов.Ссылка) ГДЕ ОтчетПроизводстваЗаСменуМатериалы.Ссылка ЕСТЬ NULL |
|||
11
John83
06.09.13
✎
17:51
|
(8) чет не допер, как именно...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |