Wilke1 0 Denunciar post Postado Novembro 9, 2007 ola a todos pessoal estou tentando montar essa select mas ela dar erro de missing parentesis voces tem ideia do que seja? :unsure: SELECT /*+ INDEX(FP IE_FORNECEDOR_PRODUTO4)*/ FP.CD_FORNECEDOR, FP.CD_REF_PRODUTO, FP.QT_POR_EMBALAGEM, FP.QT_EMB_EMBARQUE, FP.CD_UNIDADE, FP.VL_CUSTO_TABELA, P.CD_DEPARTAMENTO, P.CD_SETOR, P.CD_PRODUTO, P.NM_PRODUTO, P.FL_PESO_VARIAVEL, PL.VL_CUSTO_LIQUIDO, PL.QT_EST_MIN_DEPOSITO QT_FRACIONADA,PL.CD_LOJA, PL.QT_ESTOQUE_DEPOSITO, PL.QT_ESTOQUE,O FROM ( SELECT /*+ INDEX(FP IE_FORNECEDOR_PRODUTO4)*/ FP.CD_FORNECEDOR, FP.CD_REF_PRODUTO, FP.QT_POR_EMBALAGEM, FP.QT_EMB_EMBARQUE, FP.CD_UNIDADE, FP.VL_CUSTO_TABELA, P.CD_DEPARTAMENTO, P.CD_SETOR, P.CD_PRODUTO, P.NM_PRODUTO, P.FL_PESO_VARIAVEL, PL.VL_CUSTO_LIQUIDO, PL.QT_EST_MIN_DEPOSITO QT_FRACIONADA,PL.CD_LOJA, PL.QT_ESTOQUE_DEPOSITO, PL.QT_ESTOQUE,O FROM TB_PRODUTO_LOJA PL, TB_PRODUTO P, TB_FORNECEDOR_PRODUTO FP WHERE FP.CD_FORNECEDOR = '0005221005' AND FP.CD_DIVISAO IN(5057005) AND FP.DT_FORA_LINHA IS NULL AND P.CD_PRODUTO = FP.CD_PRODUTO AND P.FL_ATIVO_INATIVO = 'A' AND PL.CD_PRODUTO = P.CD_PRODUTO AND PL.CD_LOJA = '030' AND PL.DT_FORA_LINHA IS NULL ORDER BY P.CD_DEPARTAMENTO, P.CD_SETOR, P.NM_PRODUTO UNION ALL SELECT O /*+ INDEX(FP IE_FORNECEDOR_PRODUTO4)*/ FP.CD_FORNECEDOR, FP.CD_REF_PRODUTO, FP.QT_POR_EMBALAGEM, FP.QT_EMB_EMBARQUE, FP.CD_UNIDADE, FP.VL_CUSTO_TABELA, P.CD_DEPARTAMENTO, P.CD_SETOR, P.CD_PRODUTO, P.NM_PRODUTO, P.FL_PESO_VARIAVEL, PL.VL_CUSTO_LIQUIDO, PL.QT_EST_MIN_DEPOSITO QT_FRACIONADA,PL.CD_LOJA, PL.QT_ESTOQUE_DEPOSITO, PL.QT_ESTOQUE,O FROM TB_PRODUTO_LOJA PL, TB_PRODUTO P, TB_FORNECEDOR_PRODUTO FP WHERE FP.CD_FORNECEDOR = '0005221005' AND FP.CD_DIVISAO IN(5057005) AND FP.DT_FORA_LINHA IS NULL AND P.CD_PRODUTO = FP.CD_PRODUTO AND P.FL_ATIVO_INATIVO = 'A' AND PL.CD_PRODUTO = P.CD_PRODUTO AND PL.CD_LOJA = '001' AND PL.DT_FORA_LINHA IS NULL ORDER BY P.CD_DEPARTAMENTO, P.CD_SETOR, P.NM_PRODUTO ) Compartilhar este post Link para o post Compartilhar em outros sites
bdexterholland 0 Denunciar post Postado Novembro 9, 2007 eu não conheço muito a fundo o sql mas me parece faltar select também para a linha 13 do seu post contando a partir do 1º select, aquele from parece não ter uma consulta atrelada, sem contar que parece faltar os ';' para separar os selects. mas como não conheço a fundo a linguagem SQL, meu post pode ser ignorado Quanto aos parêntestes, não encontrei nenhum parênteses esquecido aberto, talvez seja algum comando que não foi colocado parenteses... Compartilhar este post Link para o post Compartilhar em outros sites
LODVini 0 Denunciar post Postado Novembro 14, 2007 Boa tarde! Faz tempo que não participo mais do fórum, hehe.. mas vamos ao que interessa: Wilke1, apenas organizei tua query de uma forma que eu entendesse melhor e ficasse mais claro, e pude ver que no teu terceiro select, (o segundo do union all), tu tem a coluna "O" duas vezes sem alias diferentes, isso provavelmente vai dar erro, mas na linha 52 (após o comando "select") tu adiciona está coluna e após tu adiciona o "Hint" mas acredito estar errado está parte pois o hint deveria ser o primeiro, e como logo após o hint tu tem outra coluna sem a vírgula antes, ocorre o erro. Outra questão seria o primeiro hint: acredito que ele não irá fazer diferença nenhuma na tua query pois a tabela do primeiro from é o select com o union e ele em si não possui um hint. Alguém poderia confirmar? ps.: Tu força este hint pois está muito lenta tua consulta? select /*+ INDEX(fp ie_fornecedor_produto4)*/ fp.cd_fornecedor , fp.cd_ref_produto , fp.qt_por_embalagem , fp.qt_emb_embarque , fp.cd_unidade , fp.vl_custo_tabela , p.cd_departamento , p.cd_setor , p.cd_produto , p.nm_produto , p.fl_peso_variavel , pl.vl_custo_liquido , pl.qt_est_min_deposito qt_fracionada , pl.cd_loja , pl.qt_estoque_deposito , pl.qt_estoque , o from ( select /*+ INDEX(fp ie_fornecedor_produto4)*/ , fp.cd_fornecedor , fp.cd_ref_produto , fp.qt_por_embalagem , fp.qt_emb_embarque , fp.cd_unidade , fp.vl_custo_tabela , p.cd_departamento , p.cd_setor , p.cd_produto , p.nm_produto , p.fl_peso_variavel , pl.vl_custo_liquido , pl.qt_est_min_deposito qt_fracionada , pl.cd_loja , pl.qt_estoque_deposito , pl.qt_estoque , o from tb_produto_loja pl , tb_produto p , tb_fornecedor_produto fp where fp.cd_fornecedor = '0005221005' and fp.cd_divisao in (5057005) and fp.dt_fora_linha is null and p.cd_produto = fp.cd_produto and p.fl_ativo_inativo = 'A' and pl.cd_produto = p.cd_produto and pl.cd_loja = '030' and pl.dt_fora_linha is null order by p.cd_departamento , p.cd_setor , p.nm_produto union all /*linha 52*/ select o /*+ INDEX(fp ie_fornecedor_produto4)*/ fp.cd_fornecedor , fp.cd_ref_produto , fp.qt_por_embalagem , fp.qt_emb_embarque , fp.cd_unidade , fp.vl_custo_tabela , p.cd_departamento , p.cd_setor , p.cd_produto , p.nm_produto , p.fl_peso_variavel , pl.vl_custo_liquido , pl.qt_est_min_deposito qt_fracionada , pl.cd_loja , pl.qt_estoque_deposito , pl.qt_estoque , o from tb_produto_loja pl , tb_produto p , tb_fornecedor_produto fp where fp.cd_fornecedor = '0005221005' and fp.cd_divisao in (5057005) and fp.dt_fora_linha is null and p.cd_produto = fp.cd_produto and p.fl_ativo_inativo = 'A' and pl.cd_produto = p.cd_produto and pl.cd_loja = '001' and pl.dt_fora_linha is null order by p.cd_departamento , p.cd_setor , p.nm_produto ) Compartilhar este post Link para o post Compartilhar em outros sites
Wilke1 0 Denunciar post Postado Novembro 19, 2007 Boa tarde! Faz tempo que não participo mais do fórum, hehe.. mas vamos ao que interessa: Wilke1, apenas organizei tua query de uma forma que eu entendesse melhor e ficasse mais claro, e pude ver que no teu terceiro select, (o segundo do union all), tu tem a coluna "O" duas vezes sem alias diferentes, isso provavelmente vai dar erro, mas na linha 52 (após o comando "select") tu adiciona está coluna e após tu adiciona o "Hint" mas acredito estar errado está parte pois o hint deveria ser o primeiro, e como logo após o hint tu tem outra coluna sem a vírgula antes, ocorre o erro. Outra questão seria o primeiro hint: acredito que ele não irá fazer diferença nenhuma na tua query pois a tabela do primeiro from é o select com o union e ele em si não possui um hint. Alguém poderia confirmar? ps.: Tu força este hint pois está muito lenta tua consulta? select /*+ INDEX(fp ie_fornecedor_produto4)*/ fp.cd_fornecedor , fp.cd_ref_produto , fp.qt_por_embalagem , fp.qt_emb_embarque , fp.cd_unidade , fp.vl_custo_tabela , p.cd_departamento , p.cd_setor , p.cd_produto , p.nm_produto , p.fl_peso_variavel , pl.vl_custo_liquido , pl.qt_est_min_deposito qt_fracionada , pl.cd_loja , pl.qt_estoque_deposito , pl.qt_estoque , o from ( select /*+ INDEX(fp ie_fornecedor_produto4)*/ , fp.cd_fornecedor , fp.cd_ref_produto , fp.qt_por_embalagem , fp.qt_emb_embarque , fp.cd_unidade , fp.vl_custo_tabela , p.cd_departamento , p.cd_setor , p.cd_produto , p.nm_produto , p.fl_peso_variavel , pl.vl_custo_liquido , pl.qt_est_min_deposito qt_fracionada , pl.cd_loja , pl.qt_estoque_deposito , pl.qt_estoque , o from tb_produto_loja pl , tb_produto p , tb_fornecedor_produto fp where fp.cd_fornecedor = '0005221005' and fp.cd_divisao in (5057005) and fp.dt_fora_linha is null and p.cd_produto = fp.cd_produto and p.fl_ativo_inativo = 'A' and pl.cd_produto = p.cd_produto and pl.cd_loja = '030' and pl.dt_fora_linha is null order by p.cd_departamento , p.cd_setor , p.nm_produto union all /*linha 52*/ select o /*+ INDEX(fp ie_fornecedor_produto4)*/ fp.cd_fornecedor , fp.cd_ref_produto , fp.qt_por_embalagem , fp.qt_emb_embarque , fp.cd_unidade , fp.vl_custo_tabela , p.cd_departamento , p.cd_setor , p.cd_produto , p.nm_produto , p.fl_peso_variavel , pl.vl_custo_liquido , pl.qt_est_min_deposito qt_fracionada , pl.cd_loja , pl.qt_estoque_deposito , pl.qt_estoque , o from tb_produto_loja pl , tb_produto p , tb_fornecedor_produto fp where fp.cd_fornecedor = '0005221005' and fp.cd_divisao in (5057005) and fp.dt_fora_linha is null and p.cd_produto = fp.cd_produto and p.fl_ativo_inativo = 'A' and pl.cd_produto = p.cd_produto and pl.cd_loja = '001' and pl.dt_fora_linha is null order by p.cd_departamento , p.cd_setor , p.nm_produto ) ola a todos pessoal estou tentando montar essa select mas ela dar erro de missing parentesis voces tem ideia do que seja? :unsure: SELECT /*+ INDEX(FP IE_FORNECEDOR_PRODUTO4)*/ FP.CD_FORNECEDOR, FP.CD_REF_PRODUTO, FP.QT_POR_EMBALAGEM, FP.QT_EMB_EMBARQUE, FP.CD_UNIDADE, FP.VL_CUSTO_TABELA, P.CD_DEPARTAMENTO, P.CD_SETOR, P.CD_PRODUTO, P.NM_PRODUTO, P.FL_PESO_VARIAVEL, PL.VL_CUSTO_LIQUIDO, PL.QT_EST_MIN_DEPOSITO QT_FRACIONADA,PL.CD_LOJA, PL.QT_ESTOQUE_DEPOSITO, PL.QT_ESTOQUE,O FROM ( SELECT /*+ INDEX(FP IE_FORNECEDOR_PRODUTO4)*/ FP.CD_FORNECEDOR, FP.CD_REF_PRODUTO, FP.QT_POR_EMBALAGEM, FP.QT_EMB_EMBARQUE, FP.CD_UNIDADE, FP.VL_CUSTO_TABELA, P.CD_DEPARTAMENTO, P.CD_SETOR, P.CD_PRODUTO, P.NM_PRODUTO, P.FL_PESO_VARIAVEL, PL.VL_CUSTO_LIQUIDO, PL.QT_EST_MIN_DEPOSITO QT_FRACIONADA,PL.CD_LOJA, PL.QT_ESTOQUE_DEPOSITO, PL.QT_ESTOQUE,O FROM TB_PRODUTO_LOJA PL, TB_PRODUTO P, TB_FORNECEDOR_PRODUTO FP WHERE FP.CD_FORNECEDOR = '0005221005' AND FP.CD_DIVISAO IN(5057005) AND FP.DT_FORA_LINHA IS NULL AND P.CD_PRODUTO = FP.CD_PRODUTO AND P.FL_ATIVO_INATIVO = 'A' AND PL.CD_PRODUTO = P.CD_PRODUTO AND PL.CD_LOJA = '030' AND PL.DT_FORA_LINHA IS NULL ORDER BY P.CD_DEPARTAMENTO, P.CD_SETOR, P.NM_PRODUTO UNION ALL SELECT O /*+ INDEX(FP IE_FORNECEDOR_PRODUTO4)*/ FP.CD_FORNECEDOR, FP.CD_REF_PRODUTO, FP.QT_POR_EMBALAGEM, FP.QT_EMB_EMBARQUE, FP.CD_UNIDADE, FP.VL_CUSTO_TABELA, P.CD_DEPARTAMENTO, P.CD_SETOR, P.CD_PRODUTO, P.NM_PRODUTO, P.FL_PESO_VARIAVEL, PL.VL_CUSTO_LIQUIDO, PL.QT_EST_MIN_DEPOSITO QT_FRACIONADA,PL.CD_LOJA, PL.QT_ESTOQUE_DEPOSITO, PL.QT_ESTOQUE,O FROM TB_PRODUTO_LOJA PL, TB_PRODUTO P, TB_FORNECEDOR_PRODUTO FP WHERE FP.CD_FORNECEDOR = '0005221005' AND FP.CD_DIVISAO IN(5057005) AND FP.DT_FORA_LINHA IS NULL AND P.CD_PRODUTO = FP.CD_PRODUTO AND P.FL_ATIVO_INATIVO = 'A' AND PL.CD_PRODUTO = P.CD_PRODUTO AND PL.CD_LOJA = '001' AND PL.DT_FORA_LINHA IS NULL ORDER BY P.CD_DEPARTAMENTO, P.CD_SETOR, P.NM_PRODUTO ) Valeu amigo,voce ajudou bastante. Compartilhar este post Link para o post Compartilhar em outros sites