Hola Guidex,
me encantan estos problemas aparentemente sencillos ;-)
Una solución es:
SELECT Uproducto, Uingreso, Uegreso
FROM (
SELECT T1.id AS Uproducto, T1.ingreso AS Uingreso, T2.egreso AS Uegreso
FROM Tabla1 AS T1
LEFT JOIN Tabla2 AS T2 ON T1.id=T2.id
UNION ALL
SELECT T2.id AS Uproducto, NULL AS Uingreso, T2.egreso AS Uegreso
FROM Tabla2 AS T2
) Calculo
GROUP BY Uproducto
Tal vez haya alguna más óptima, pero esta es la mejor que se me ocurre.
Saludos!
PD: puedo usar el ejemplo como pregunta de examen de SQL?
PPD: te dejo la estructura de las tablas que usé:
CREATE TABLE IF NOT EXISTS `Tabla1` (
`id` int(11) NOT NULL,
`ingreso` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
NSERT INTO `Tabla1` (`id`, `ingreso`) VALUES
(1, 10),
(2, 15),
(3, 20);
CREATE TABLE IF NOT EXISTS `Tabla2` (
`id` int(11) NOT NULL,
`egreso` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO `Tabla2` (`id`, `egreso`) VALUES
(2, 10),
(3, 20),
(4, 5),
(5, 6);