Is it necessary to join the mesh before adding bones?
It is not necessary to have all meshes in one object to control it with a single armature. I’ve done multiple objects with one armature many times, Usually because I wanted to preserve two UV maps and did not know yet how to merge them.
Thus, I guess your rigging system and weight painting needs adjustment. There are answered questions to this elsewhere, or you can ask your own new question. As always, I recommend the Blender Manual at docs.blender.org
PS: basically, you create vertex groups that have the same names as bones, and the bones will drag around vertices in those groups. If the vertex is part of multiple vertex groups, it will be controlled by two bones, ending up somewhere between them. This is where weights come in: we can have the vertex have less weight in one group so it will follow the other bone more but not entirely.