Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I have a query that looks like this:

select *
from find fsc,
        let lf,
        cust cus,
        STRIKE ist
WHERE   fsc.id = lf.id
AND     ist.ID_old = fsc.ID_old
AND     lf.cust_id = cus.cust_id(+)

I know (+) is old syntax for a join, but I am not sure what it is actually doing to this query. Could someone explain this and show this query without the (+) in the where statement, using more modern join syntax?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
391 views
Welcome To Ask or Share your Answers For Others

1 Answer

I believe you want this:

select *
from find fsc join
     let lf
     on fsc.id = lf.id join
     STRIKE ist
     on ist.ID_old = fsc.ID_old left join
     cust cus
     on lf.cust_id = cus.cust_id;

To be honest, the outer join is probably not necessary. Why would lf have a cust_id that is not valid? The only reasonable possibility is if the value is NULL.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...