Join i wyciągniecię tylko wartości spełniających warunek

0

Potrzebuje wyciągnąc kilka wartosci. Np pobieram imie , emial ale chce też pobrac numer telefonu ale jedynie w przypadku jak dany cust w tabli CUSTOMER_ADDRESS ma ustawiona wartość FUNCTION = 1. W tej chwili pobieram mi wszystkie rekordy nawet z wartością w FUNCTION != 1 i przepisuje do wszystkich wyświetlonych rekordów pod FUNCTION wartośc 1.
Jak poprawić to aby zadziałało poprawnie tak jak chce?

SELECT 
CONT.Name,
T1.email,
ga."FUNCTION",
cont.GSM_NUMBER "Phone number"
FROM CUSTOMER_CONTACT CONT
left join customer_email T1 ON t1.CUST_ID = dep.CUST_ID 
LEFT  join customer T2 on t1.cust_id = t2.cust_id
LEFT JOIN CUSTOMER_ADDRESS ga ON ga.CUST_ID = CONT.CUST_ID  AND ga."FUNCTION" = '1' 
WHERE  
T1.DATE_CREATE = TO_CHAR(SYSDATE - 1, 'YYYYMMDD')
and T2.DATE_CREATE = TO_CHAR(SYSDATE - 	1, 'YYYYMMDD');
0

Nie do końca kumam, co chcesz, ale poczytaj sobie jak działa JOIN... Potrzebujesz raczej INNER JOIN. Albo przenieś warunek z joina do where.

1

Moze case:

SELECT 
CONT.Name,
T1.email,
ga."FUNCTION",
case when ga.CUST_ID is null then null else cont.GSM_NUMBER end "Phone number"
FROM CUSTOMER_CONTACT CONT
left join customer_email T1 ON t1.CUST_ID = dep.CUST_ID 
LEFT  join customer T2 on t1.cust_id = t2.cust_id
LEFT JOIN CUSTOMER_ADDRESS ga ON ga.CUST_ID = CONT.CUST_ID  AND ga."FUNCTION" = '1' 
WHERE  
T1.DATE_CREATE = TO_CHAR(SYSDATE - 1, 'YYYYMMDD')
and T2.DATE_CREATE = TO_CHAR(SYSDATE - 	1, 'YYYYMMDD');

1 użytkowników online, w tym zalogowanych: 0, gości: 1