Página 1 de 1

Dúvida de SQL.

Enviado: Qui, 26 Jul 2007 10:16 am
por meguelito
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?

Enviado: Qui, 26 Jul 2007 12:11 pm
por tom
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)

Enviado: Qui, 26 Jul 2007 1:11 pm
por dr_gori
Exatamente. Veja que o que está entre parênteses é executado ANTES.