| 
    
            
         
         | 
    
    
  | 
Подскажите по запросам. | ☑ | ||
|---|---|---|---|---|
| 
    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 
 | 
         
        Принцип склеивания может и правильный, но зачем группировать по числовым полям таким как сумма взаиморасчетов, сумма заявки, сумма оплаты? помести их в функцию     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |