Bueno tras mil y un problemas al final he tenido que hacerlo en una única consulta. Así:
Código MySQL:
Ver originalSELECT c.clacli
AS CODIGO
, c.nombre
AS NOMBRE
, c.direccion
AS DIRECCION
, c.localidad
AS LOCALIDAD
, c.telefono
AS TELEFONO
, c.contacto
AS CONTACTO
, c.provincia
AS PROVINCIA
, tar.nombre
AS TARIFA
, ROUND(SUM((fl.precio
-((fl.precio
*fl.dto
)/100))*fl.cantidad
), 2) AS TOTAL
FROM tiposcli tipos
, tarifa tar
, codpais cod
, clientes c
, factura f
, factural fl
, articulo a
WHERE tipos.clatip
=c.clatip
$filtro
La cuestión es que ahora me dicen que deberían salir también los que no tienen resultados. Es decir, un LEFT JOIN. Pero no veo forma humana de convertir eso a LEFT JOIN.