Razon llevas, prueba con esto.
Código (sql) [Seleccionar]
select t.id,
t.codigo,
t.descripcion,
t.nombre_marca,
t.foto,
t.precio_compra,
t.precio_venta,
t.stock,
t.DesCategoria,
t.nombre_proveedor,
PI.precio_compra,
PI.fecha
FROM
(
SELECT P.id,
P.codigo,
P.descripcion,
MP.nombre_marca,
P.foto,
P.precio_venta,
P.stock,
C.descripcion AS DesCategoria,
Pro.nombre_proveedor
FROM producto AS P
INNER JOIN categorias AS C ON P.id_categoria = C.id
INNER JOIN marcaproducto AS MP ON P.id_marcaproducto = MP.id
INNER JOIN proveedores AS Pro ON P.id_proveedor = Pro.id
) t INNER JOIN (
SELECT id_producto,
precio_compra,
fecha
FROM ingreso_producto inner join (
SELECT
id_producto,
max(IP.fecha) as fecha
FROM ingreso_producto
GROUP BY id_producto
) set_max_fecha
ON ingreso_producto.id_producto = set_max_fecha.id_producto
AND ingreso_producto.fecha = set_max_fecha.fecha
) PI
ON P.id = PI.id_producto
ORDER BY fecha ASC