I have been trying to change my old style of SQL from cross to joins, but I can't manage to make it work.
Here is my code:
SELECT 'EFE' tipo,
c.empnum,
c.succlave,
d.tipopago,
d.tjcredito
FROM detcobros d,
cobros c,
masterbancos b,
monedas m
WHERE d.empnum = c.empnum
AND d.succlave = c.succlave
AND d.cobfolio = c.cobfolio
AND d.PaisClave = b.PaisClave(+)
AND d.bannum = b.bannum(+)
AND d.monNum = m.monNum
AND d.tipopago = 'EF'
AND ( (c.status IN ('AU', 'US', 'UP'))
OR ( c.status = 'CA'
AND NVL (c.cortecaja, 0) <> NVL (c.cortecajacanc, 0)))
AND c.empnum = 255
AND c.succlave = 'CDCU'
AND c.cortecaja = 3004
And here what I've tried:
SELECT 'EFE' tipo,
c.empnum,
c.succlave,
d.tipopago,
d.tjcredito
FROM detcobros d
JOIN cobros c ON c.empnum = d.empnum
and c.succlave = d.succlave
and c.cobfolio = d.cobfolio
RIGHT JOIN masterbancos b ON b.PaisClave = d.PaisClave
and b.bannum = d.bannum
JOIN monedas m ON m.monNum = d.monNum
WHERE d.tipopago = 'EF'
AND ( (c.status IN ('AU', 'US', 'UP'))
OR ( c.status = 'CA'
AND NVL (c.cortecaja, 0) <> NVL (c.cortecajacanc, 0)))
AND c.empnum = 255
AND c.succlave = 'CDCU'
AND c.cortecaja = 3004
The first query returns data but the second doesn't get any data.
Try it with LEFT JOIN because the + operator is on the right.