Si los nombres de los campos en lugar de estar numerados fueran nombres comprensibles seria mas facil ayudarte, y te aseguro que tu productividad programando se multiplicaria.
Si no quieres usar JOIN no lo uses ni de forma implicita
FROM ventas,abonos
WHERE ventas.campo01='$cliente_id' .... AND abonos.campo09='$cliente_id'
es lo mismo,
pero menos eficiente, que
FROM ventas INNER JOIN abonos ON ventas.campo01=abonos.campo09
WHERE ventas.campo01='$cliente_id' ....
Si los 0€ de tu ejemplo indican que quieres que salga el campo sin datos luego debes hacer una union, (voy a traducir los nombres de los campos, por el ejemplo tambien deduzco que de comentarios solo hay en los abonos)
Código MySQL:
Ver originalSELECT sbc.fecha
,sbc.comentario
, sbc.cargos
, sbc.impAbono
FROM (SELECT v.fecha
,'Venta' comentario
, v.cargos
, 0 impAbono
WHERE v.cliente_id
='$cliente_id' AND v.campo09
>='1' SELECT a.fecha
,a.comentario
, 0 cargos
, a.impAbono
WHERE a.cliente_id
='$cliente_id' AND a.campo05
='$modulo2') sbc
Fijate que para que las dos consultas tengan la misma estructura de campos pongo valores fijos a los campos que no tengo en la tabla.
Finalmente el order by debe hacerse en una superconsulta puesto que ORDER BY y UNION no se entienden bien....