Lightweighting and cost reduction are overarching research themes in aerospace and automotive industries, leading to the exploration of new materials, advanced manufacturing methods, and design optimization algorithms. Multi-material topology optimization is an important tool that can generate unconventional designs leveraging the differing mechanical properties of multiple material types to increase performance. However, these approaches do not consider joining design during optimization, which can ultimately result in higher cost, worse performance, and unrealistic designs that must be altered in the interpretation stage. This work presents a multi-material and multi-joint topology optimization methodology that models joints at the interfaces between dissimilar materials, controls the joining pattern using joint design variables, and reduces cost through the addition of a joining cost constraint. Design variable interpolation schemes, interface detection for unstructured meshes, and sensitivity analysis are outlined in detail in this paper. The approach is applied to a real-world rocker arm geometry to demonstrate the importance of considering joints during multi-material topology optimization. The results of the numerical example indicate that the methodology can successfully detect interfaces in unstructured meshes and strategically place joints to maximize stiffness of the structure. A parameter study of various joining cost constraint levels illustrates how the optimizer alters part topology and joining design to reduce cost.