Dúvida de SQL.

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
meguelito
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 60
Registrado em: Ter, 17 Jan 2006 1:45 pm
Localização: Santa Catarina
Att.:
Alan Juliano Metzger
Programador Oracle
Inside System Informática
Msn/E-mail: alanjuliano@yahoo.com.br

Salve grande galera oraclianos.

Galera fiquei encucado com uma parada, que me deparei hoje.

Fiz o seguinte select:

SELECT USER, T6155.*
FROM FORMA_PAGAMENTO_TIPO_TARIFA T6155
WHERE T6155.CD_OPERACAO_TRANSPORTE IN
(SELECT T6439.CD_OPERACAO_TRANSPORTE
FROM USUARIO_PROGRAMA_OPE_TPT T6439
WHERE T6439.CD_USUARIO = USER
AND T6439.CD_PROGRAMA = 'LTCC1110')
OR USER = 'CAMCOM01'
AND T6155.NR_SEQ_FORMA_PGT_TARIFA = 11426

porém eu estava conectado com o usuário CORPORATIVO, e ele me retornava todos os registros.

Ai então mudei o meu sql para o seguinte:

SELECT USER, T6155.*
FROM FORMA_PAGAMENTO_TIPO_TARIFA T6155
WHERE (T6155.CD_OPERACAO_TRANSPORTE IN
(SELECT T6439.CD_OPERACAO_TRANSPORTE
FROM USUARIO_PROGRAMA_OPE_TPT T6439
WHERE T6439.CD_USUARIO = USER
AND T6439.CD_PROGRAMA = 'LTCC1110')
OR USER = 'CAMCOM01')
AND T6155.NR_SEQ_FORMA_PGT_TARIFA = 11426

e me retornou somente o registro que eu queria.

Bom a pergunta em questão é a seguinte qual a diferença dos meus sql´s, quando eu coloco OR sem parentesis ele não interpreta o que está abaixo?
tom
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 29
Registrado em: Dom, 11 Jul 2004 8:45 pm
Localização: Guarulhos - SP

Isso aí é um problema de lógica. As linhas retornarão se todas as condições especificadas no where resultarem em Verdadeiro. Então veja, avaliar:

Selecionar tudo

Verdadeiro AND Verdadeiro OR Falso
pode dar resultado diferente de avaliar

Selecionar tudo

Verdadeiro AND (Verdadeiro OR Falso)
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Exatamente. Veja que o que está entre parênteses é executado ANTES.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 7 visitantes