Here is a way to do it, create a torus, make it as simple as possible, like 16x8 vertices, move it away from its origin on Y or X axis in Edit mode, duplicate and rotate 120° twice with the 3D cursor as axis of rotation, cut a hole on each one:
CtrlE > Bridge Edge Loops between these vertices:
Do the same all around, continue to fill the faces until you get that:
Create an edge loop around each bridge:
Merge these 3 inner vertices at center:
Scale these edge loops except on Z:
Result with a Subdivision Surface modifier and Shade Smooth: