Without a .3dm file of the surfaces which are not joining (strongly prefered) or at least images of the surfaces (better than nothing) the only help I can offer is some general comments about joining. You can post a .3dm file by dragging the file to where you type your post, or by clickin on the vertical arrow above where you type your post.
Probaby the most common cause of not being able to join surfaces in Rhino is when the edges to be joined are not close enough to each other. The general rule is the edges need to be within 2 x absolute tolerance to be joined. CrvDeviation can be used to check the maximum gap between surface edges. Start CrvDeviation and select surface edges when curves are requested. MatchSrf can be used to bring the edge within tolerance of each other.
There is also the brute force solution of JoinEdge which “joins” the surfaces but does not fix the gap - it essentially overrides the tolerance. Only use JoinEdge when you need a to join surfaces and cannot take time to fix them. Be aware that using JoinEdge can cause problems in the future, and fixing the problem at that time is typically a lot more work than fixing it initially.