Hola, alguien puede decirme como traduzco esto que esta en PL/SQL a ANSI-SQL? Lo preguntaron en un final y la verdad no encuentro la manera de hacer un LEFT OUTER JOIN
SELECT nfactura, importe, NVL(t2.importe, 'sin cliente')
FROM facturas t1 lef outer join clientes t2 on t1.codcli = t2.codcli
WHERE t1.fecha>(sysdate-365)
Se agradece !
Un LEFT JOIN y un LEFT OUTER JOIN son lo mismo. Y si mal no recuerdo en ANSI un LEFT JOIN se hace con *=.
SELECT nfactura, importe, ISNULL(t2.importe, 'sin cliente')
FROM facturas t1, clientes t2
WHERE t1.codcli *= t2.codcli
and t1.fecha> SYSDATETIME() - 365
Espero te sea util.
(04-10-2016 22:23)guilletala escribió: [ -> ]Un LEFT JOIN y un LEFT OUTER JOIN son lo mismo. Y si mal no recuerdo en ANSI un LEFT JOIN se hace con *=.
SELECT nfactura, importe, ISNULL(t2.importe, 'sin cliente')
FROM facturas t1, clientes t2
WHERE t1.codcli *= t2.codcli
and t1.fecha> SYSDATETIME() - 365
Espero te sea util.
Antes que nada, gracias por tu pronta respuesta, pero tengo entendido que ese simbolo (*) como en PLSQL esta el (+) para indicar un OUTER JOIN, left o right, dependiendo de que lado de la clave de la tabla 2 este el mismo, es especifico de algun motor, no de ANSI-SQL, igualmente un compañero encontró esta forma de resolverlo:
en ANSI-SQL
SELECT nfactura, importe, ISNULL((SELECT t2.nombre FROM clientes t2 WHERE t2.codcli=t1.codcli), 'sin cliente')
FROM facturas t1
AND t1.fecha > (SYSDATETIME-365)