/ / Se mais em consultas SQL oracle - sql, oracle10g

Se mais em consultas SQL oracle - sql, oracle10g

Eu tenho um cenário onde posso obter 2 tipos de entradas, mas o resultado é o mesmo se você incluir entrada 1 ou entrada 2 ou ambos. A seguir, a consulta que tenho atualmente. Esta consulta recupera o customer_id a partir do banco de dados do circuit e telephone entradas.

select customer.customer_id from circuits join customer on customer.cust_order = circuits.cust_order where circuitId= "somecircuit"
union
select customer.customer_id from customer join telephone on telephone.number = customer.number where telephone = "34234242"

Agora preciso que a segunda consulta não seja executada se o telefone de entrada não estiver disponível e vice-versa para o circuito. Existe uma maneira de fazer isso na consulta em si?

Eu não estou pensando em criar um bloco PL / SQL para isso, se não há maneira de fazê-lo no sql eu tenho que recorrer a Java e duas consultas diferentes para cada cenário.

Respostas:

0 para resposta № 1

Isso faria?

select customer.customer_id
from circuits join customer on customer.cust_order = circuits.cust_order
where circuitId is not null
union
select customer.customer_id
from customer join telephone on telephone.number = customer.number
where telephone is not null

-1 para resposta № 2

Você pode juntar todas as suas tabelas na consulta SQL e deixar a condição WHERE tratar o resto:

SELECT customer.customer_id
FROM circuitos JUNTE-SE ao cliente ON customer.cust_order = circuits.cust_order
JUNTE-SE ao telefone em telephone.number = customer.number
WHERE circuitId = "somecircuit" OU telefone = "34234242"

O ID do circuito definido recuperará os dados do seu cliente ou o número do telefone.