Hoy me he topado con el siguiente problema (que en mysql no existe):
Tengo la siguiente consulta:
Código MySQL:
Ver original
SELECT cl.cl_nombre as 'Customer',cl.cl_custnumber AS 'Cust Number', mo.mo_nombre AS 'Currency',CONVERT(varchar, CAST(ops.om_faccant AS money), 1) as 'Maximum loan', CONVERT(varchar, CAST(dbo.total_prestamo(ops.om_id) AS money), 1) as 'Cumulative loan' ,CONVERT(varchar, CAST(dbo.AVAILABLE_AMOUNT(ops.om_id , ops.om_faccant)AS money), 1) as 'Available Balance' FROM opsmemo ops inner join clientes cl on cl.cl_id = ops.cl_id inner join monedas mo on mo.mo_id = ops.mo_id inner join prestamos pr on pr.om_id = ops.om_id where (dbo.total_prestamo(ops.om_id)+(ops.om_faccant*.1)) >= ops.om_faccant group by cl.cl_nombre ,cl.cl_custnumber,ops.om_faccant,pr.om_id , ops.om_id,mo.mo_nombre
Esta consulta devuelve erróneamente 1 registro por cliente, lo cual está mal pues debería devolver un registro por opsmemo (un cliente puede tener varios opsmemo), sin embargo la hice así para que funcionara.
Estuve buscando que hacer para solucionarlo y no entiendo la solución (ni siquiera para dos tablas), entonces me atrevo esta vez a pedir la solución a esta consulta y que me expliquen el funcionamiento para poder hacerlo en futuros casos (y así no volver a pedirles que me resuelvan la vida).
Gracias de antemano y disculpen que les pida la solución directa pero enserio, no entiendo la solución.
PD: les dejo el código solución que encontre (para dos tablas)