Boolean operation destroying topology-deleting faces
So, First, you have overlapping vertices. 
Select all your vertices with  A  in edit mode and vertex select mode, and Press  ALT  +  M  > by distance in order to eliminate double-vertices.

The real problem is you have 3 inside faces which mess up your boolean operation. Notice how in wireframe view, some faces have a clearer shade of grey. That means there are faces which shouldn't be there. Also note that there are some issues in the leg of the chair, but you will be able to fix them with the same technique :



In edit mode, select faces around the 3 culprits and press  H  to hide them. Then go in face select mode by pressing  3  , and select them. You have to select next to its little dot which may or may not be easily visible. Press  X  to delete, then select "only faces".



When all the culprit faces are deleted, while still in edit mode, press  ALT  +  H to unhide your geometry. Result :