Ho uno scenario in cui posso ottenere 2 tipi di input ma il risultato è lo stesso se includi l'input 1 o l'input 2 o entrambi. La seguente è la query che ho attualmente. Questa query recupera il file customer_id
dal database dal circuit
e telephone
ingressi.
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"
Ora ho bisogno che la seconda query non venga eseguita se il telefono in ingresso non è disponibile e viceversa per il circuito. C'è un modo per farlo nella query stessa?
Non sto pensando di creare un blocco PL / SQL per questo, se non c'è modo di farlo in sql devo ricorrere a Java e due query diverse per ogni scenario.
risposte:
0 per risposta № 1Questo dovrebbe fare?
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 per risposta № 2
È possibile unire tutte le tabelle nella query SQL e lasciare che la condizione WHERE gestisca il resto:
SELEZIONA cliente.customer_id
DA circuiti ACCEDI al cliente SU customer.cust_order = circuit.cust_order
ISCRIVITI telefono per telefono.numero = numero cliente
DOVE circuitId = "somecircuit" OR telephone = "34234242"
L'ID del circuito impostato recupererà i dati del cliente o il numero di telefono.