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 № 1Isso 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.