DSolve does not return solution to simple system of second order PDEs

The comment by user64494 suggested to me the following

sxy = Flatten@DSolve[{D[f[x, y, z], x, y] == 0}, f[x, y, z], {x, y, z}] /. 
    C[n_][z][v_] -> d[n][v, z];
sxz = Flatten@DSolve[{D[d[1][x, z], x, z] == 0}, d[1][x, z], {x, z}] /. C -> c;
syz = Flatten@DSolve[{D[d[2][y, z], y, z] == 0}, d[2][y, z], {y, z}] /. C -> b;
sxy /. sxz /. syz
(* {f[x, y, z] -> b[1][y] + b[2][z] + c[1][x] + c[2][z]} *)

Not at all satisfying but perhaps useful in some circumstances.


First we solve the system:

s = Flatten @@ 
   DSolve[{D[f[x, y, z], x, y, z] == 0}, f[x, y, z], {x, y, z}] /. 
  C[n_][a_, b_] -> d[n][a, b]

getting:

{f[x, y, z] -> d[1][y, z] + d[2][x, z] + d[3][x, y]}

Then we solve the original system equation for equation:

sxyz = Join[
  Flatten @@ 
    DSolve[D[d[1][y, z] + d[2][x, z] + d[3][x, y], x, y] == 0, 
     d[3][x, y], {x, y}] /. C[n_][a_] -> f1[n][a],
  Flatten @@ 
    DSolve[D[d[1][y, z] + d[2][x, z] + d[3][x, y], x, z] == 0, 
     d[2][x, z], {x, z}] /. C[n_][a_] -> f2[n][a],
  Flatten @@ 
    DSolve[D[d[1][y, z] + d[2][x, z] + d[3][x, y], y, z] == 0, 
     d[1][y, z], {y, z}] /. C[n_][a_] -> f3[n][a]
  ]

getting:

{d[3][x, y] -> f1[1][x] + f1[2][y], 
 d[2][x, z] -> f2[1][x] + f2[2][z],
 d[1][y, z] -> f3[1][y] + f3[2][z]}

The final solution comes then from:

(s /. sxyz) //. f_[n_][a_] + g_[m_][a_] -> F[n][m][a]

as:

{f[x, y, z] -> F[1][1][x] + F[2][1][y] + F[2][2][z]}