|
Подскажите по запросам. | ☑ | ||
---|---|---|---|---|
0
fungus
21.11.12
✎
15:37
|
Добрый день. Подскажите пожалуйста что нужно делать чтобы научиться правильно писать запросы, что почитать-посмотреть? Я имею ввиду что синтаксис запроса мне понятен, понятно как пользоваться конструктором запросов, как сделать объединение соединение, вирутальные таблицы и т.п. Все время возникает проблема потому что я неправильно определяю что зачем нужно сделать , ну т.е. объединить две таблицы из двух регистров, а потом присоединить третью, может надо было соединять их все три по очереди. В результате получается бред, либо пустые поля либо дублирующиеся строки которые потом пытаюсь сгруппировать и получается еще хуже.
|
|||
1
Лефмихалыч
21.11.12
✎
15:39
|
нужно решать практические задачи
|
|||
2
ковер
21.11.12
✎
15:41
|
нужно курить мануалы
|
|||
3
GLazNik
21.11.12
✎
15:41
|
(0) если почитать... то я бы предложил почитать по SQL запросам
|
|||
4
Drac0
21.11.12
✎
15:41
|
Либо взять любую конфигурацию и с помощью консоли запросов поэкспериментировать вдоволь.
|
|||
5
fungus
21.11.12
✎
15:46
|
ну вот например такой запрос пишу, нужно все заявки показать по которым либо не было ничего либо была опла или отгрузка либо и то и другое. В результате не могу понять почему в поле заявок дубли.
ВЫБРАТЬ ЗаказыПокупателей.Регистратор КАК ДокЗаявка, СУММА(ЗаказыПокупателей.СуммаВзаиморасчетов) КАК СуммаЗаявка, ВЫБОР КОГДА ВзаиморасчетыСКонтрагентами.Регистратор ССЫЛКА Документ.ПлатежноеПоручениеИсходящее ИЛИ ВзаиморасчетыСКонтрагентами.Регистратор ССЫЛКА Документ.ОплатаОтПокупателяПлатежнойКартой ТОГДА ВзаиморасчетыСКонтрагентами.Регистратор ИНАЧЕ NULL КОНЕЦ КАК ДокОплата, ВЫБОР КОГДА ВзаиморасчетыСКонтрагентами.Регистратор ССЫЛКА Документ.ПлатежноеПоручениеИсходящее ИЛИ ВзаиморасчетыСКонтрагентами.Регистратор ССЫЛКА Документ.ОплатаОтПокупателяПлатежнойКартой ТОГДА ВзаиморасчетыСКонтрагентами.СуммаВзаиморасчетов ИНАЧЕ NULL КОНЕЦ КАК СуммаОплата ПОМЕСТИТЬ ТабЗаявкаОплата ИЗ РегистрНакопления.ЗаказыПокупателей КАК ЗаказыПокупателей ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентами КАК ВзаиморасчетыСКонтрагентами ПО ЗаказыПокупателей.Регистратор = ВзаиморасчетыСКонтрагентами.Сделка ГДЕ ЗаказыПокупателей.Регистратор ССЫЛКА Документ.ЗаказПокупателя И ЗаказыПокупателей.Регистратор.Дата МЕЖДУ &ДатаНач И &ДатаКон СГРУППИРОВАТЬ ПО ЗаказыПокупателей.Регистратор, ВЫБОР КОГДА ВзаиморасчетыСКонтрагентами.Регистратор ССЫЛКА Документ.ПлатежноеПоручениеИсходящее ИЛИ ВзаиморасчетыСКонтрагентами.Регистратор ССЫЛКА Документ.ОплатаОтПокупателяПлатежнойКартой ТОГДА ВзаиморасчетыСКонтрагентами.Регистратор ИНАЧЕ NULL КОНЕЦ, ВЫБОР КОГДА ВзаиморасчетыСКонтрагентами.Регистратор ССЫЛКА Документ.ПлатежноеПоручениеИсходящее ИЛИ ВзаиморасчетыСКонтрагентами.Регистратор ССЫЛКА Документ.ОплатаОтПокупателяПлатежнойКартой ТОГДА ВзаиморасчетыСКонтрагентами.СуммаВзаиморасчетов ИНАЧЕ NULL КОНЕЦ ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ТабЗаявкаОплата.ДокЗаявка, ТабЗаявкаОплата.СуммаЗаявка, ТабЗаявкаОплата.ДокОплата, ТабЗаявкаОплата.СуммаОплата, ВЫБОР КОГДА ВзаиморасчетыСКонтрагентами.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг ТОГДА ВзаиморасчетыСКонтрагентами.Регистратор ИНАЧЕ NULL КОНЕЦ КАК ДокОтгрузка, ВЫБОР КОГДА ВзаиморасчетыСКонтрагентами.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг ТОГДА ВзаиморасчетыСКонтрагентами.СуммаВзаиморасчетов ИНАЧЕ NULL КОНЕЦ КАК СуммаОтгрузка ИЗ ТабЗаявкаОплата КАК ТабЗаявкаОплата ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентами КАК ВзаиморасчетыСКонтрагентами ПО ТабЗаявкаОплата.ДокЗаявка = ВзаиморасчетыСКонтрагентами.Сделка СГРУППИРОВАТЬ ПО ТабЗаявкаОплата.ДокЗаявка, ВЫБОР КОГДА ВзаиморасчетыСКонтрагентами.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг ТОГДА ВзаиморасчетыСКонтрагентами.Регистратор ИНАЧЕ NULL КОНЕЦ, ТабЗаявкаОплата.ДокОплата, ТабЗаявкаОплата.СуммаЗаявка, ТабЗаявкаОплата.СуммаОплата, ВЫБОР КОГДА ВзаиморасчетыСКонтрагентами.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг ТОГДА ВзаиморасчетыСКонтрагентами.СуммаВзаиморасчетов ИНАЧЕ NULL КОНЕЦ |
|||
6
Александр Б
21.11.12
✎
15:48
|
А еще для понимания работы "физики" запросов бывает полезно на листочке нарисовать таблички, и что будет после каждого соединения объединения.
|
|||
7
GLazNik
21.11.12
✎
15:51
|
(5) это типа ход такой? начать из далека и попросить разобрать запрос?
Дубли как правило возникают из-за кривого соединения. |
|||
8
fungus
21.11.12
✎
15:53
|
(7) извеняюсь что код криво написан, не часто пишу сюда поэтому так получилось. Ща почитаюю гденить как правилно вставлять.
|
|||
9
fungus
21.11.12
✎
15:54
|
(7) или я неправильно понял ?
|
|||
10
program1Cer
21.11.12
✎
15:56
|
Теорию множеств почитай, объединение (union) пересечение (inner join) и так далее ноги от туда растут.
|
|||
11
fungus
21.11.12
✎
16:03
|
В принципе чтобы код не читать. Этот запрос к УТ 10.3.
Нужно получить таблицу где будут перечислены все заявки, если заявка оплачена или отгружена, то напротив нее документ оплаты и отгрузка. Я выбираю из регистра ЗаявкаПокупателей Все заявки, и соединяю по сделке (заказ) результат этого запроса с выборкой оплат из регистра ВзаиморасчетыСКонтрагентами (платежка или оплата по платежной карте), потом к получившемуся результату присоединяю выборку реализаций соединяю также по сделке (заказ). |
|||
12
fungus
21.11.12
✎
16:04
|
Принцип склетвания таблиц правильный или нет?
|
|||
13
program1Cer
23.11.12
✎
07:42
|
Принцип склеивания может и правильный, но зачем группировать по числовым полям таким как сумма взаиморасчетов, сумма заявки, сумма оплаты? помести их в функцию
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |