-1

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?

SJR59
  • 73
  • 3
  • 14
  • the `(+)` is old syntax for an `OUTER JOIN` or a `LEFT JOIN` . Keeps all the records from the master table(The one without the plus sign) and all the matching records from the detail table(the one with the plus sign) – sagi Oct 13 '16 at 12:42
  • Does this answer your question? [Oracle "(+)" Operator](https://stackoverflow.com/questions/4020786/oracle-operator) – philipxy Dec 25 '22 at 06:44

1 Answers1

1

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.

Gordon Linoff
  • 1,242,037
  • 58
  • 646
  • 786