Конструкция Select ... From (select ...)

отредактировано 06:49 Раздел: FastReport .NET
Доброго времени суток.

Возникла проблема, создаю отчет, при создании sql-запроса через мастер запросов, появляется ошибка
"Синтаксическая ошибка: ожидается идентификатор или идентификатор в кавычках".
запрос имеет следующую структуру
select .......
  from 
    table1,
    (Select 1 from dual) test,
    (Select 1 from dual) test2
Where ....
Причем если убрать
(Select 1 from dual) test,
(Select 1 from dual) test2
то ошибки нет, пробовал выполнить запрос в конструкторе запросов все ОК.

БД: Oracle.

Комментарии

  • отредактировано 06:49
    Здравствуйте.

    Разработчики, похоже, не ответят...

    Я проверил на FastReport.OracleODP соединении.
    Все работает нормально.

    Существуют некоторые особенности при работе с разными типами подключения к Ораклу.
    Укажите, какой тип подключения используется.
  • отредактировано September 2010
    Спс за подсказку, попробовал, да запрос прокатил, но теперь при использовании параметра запрос ничего не возвращает

    Тип подключения при создании источника, Подключение к Oracle
  • отредактировано 06:49
    dmazay написал: »
    Спс за подсказку, попробовал, да запрос прокатил, но теперь при использовании параметра запрос ничего не возвращает

    Тип подключения при создании источника, Подключение к Oracle

    Будете так формулировать вопросы - никто не поможет...

    Этой информации мало.
    Уточните следующее:
    1. Какое именно подключение используется?
    FastReport.OracleODP или FastReport.Oracle?
    2. Полный текст запроса "в студию"
    3. Какие типы параметров в FastReport?
    4. Какого типа поля в БД по которым строится WHERE?
  • отредактировано 06:49
    1. FastReport.OracleODP
    2.
    SELECT
            sh.order_num,
            TO_CHAR(TO_CHAR(sh.d_invoice,'DDD'),'099') || TO_CHAR(sh.series,'0999') || '-' as whseries,  TO_CHAR(sh.seriesbin,'099') as whserbin,
            sh.shipment_id as i_invoice,
            sh.d_invoice,        sh.series,        
            sh.shipment_real_cost as f_invoiceval,
            shipment_payment_type as payment_type,
            sh.shipment_code as Barcode,
            sh.i_pandp_taxcode,
            sh.CLIENT_LAST_NAME,
            sh.CLIENT_FIRST_NAME,
            sh.CLIENT_MIDDLE_NAME,
            sh.client_zipcode as IndexTo,
            sh.client_district as Area,
            NVL(sh.client_region,sh.client_city) as Region,
            NVL2(sh.client_district,sh.client_city,'') || ' ' || sh.client_street as City,
            sh.CLIENT_H_PHONE, 
            sh.CLIENT_M_PHONE, 
            sh.CLIENT_O_PHONE, 
            sh.FIRM_SNAME, 
            sh.shipment_weight as Mass,
            sh.real_price*100 AS Real_price, 
            sh.f_pandpval, 
            DECODE(sh.shipment_payment_type,1,sh.shipment_real_cost*100,NULL) as Payment,
            sh.credit, 
            CMZ.CITY, CMG.ID GATE_ID,
            C.ID CARRIER_ID
    FROM        
            R_BATCH b,
            R_SHIPMENT sh,
            CM_ZIPCODES CMZ,
            CM_BATCHES CMB,        
            
           (SELECT g.Id,gpp.id as gpp_id FROM Cm_Gates g
                        INNER JOIN Cm_Gates Gp ON g.Parent_Id = Gp.Id
                        INNER JOIN Cm_Gates Gpp ON Gp.Parent_Id = Gpp.Id) CMG ,
           (SELECT case when cg.cnt > 1 then c.parent_id  else c.id  end cm_carrier_id, cg.cm_gate_id
                         from (select min(cg.cm_carrier_id) cm_carrier_id, cg.cm_gate_id, count(*) cnt from cm_carriers_gates cg group by cm_gate_id) cg,
           cm_carriers c where cg.cm_carrier_id = c.id) cg ,
           cm_carriers c
    WHERE
            sh.batch_id = b.batch_id AND
            b.BATCH_ID=cmb.ID AND
            CMG.Id = CMB.Cm_Gate_Id AND
            cg.cm_gate_id = CMG.gpp_id AND
            c.id = cg.cm_carrier_id  AND
            c.status_id = 0 AND
            cmz.Zipcode=sh.client_zipcode AND
            b.batch_id=&pp
    
    3. Пробовал Decimal, Long, Int32
    4. NUMBER

    Все данные.
  • отредактировано September 2010
    Это другое дело...

    Просто замените в запросе
    &pp
    
    на
    :pp
    
    .
    В Оракле параметры определяются через двоеточие.
    Может именно в FastReport и можно с "&", но я так не пробовал, да и незачем.

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.