How to combine smooth and non-smooth faces?
In many cases it's better not to use different shading types, rather than set whole mesh as smooth.

For the rest of the mesh which is intended to be flat you either add Edge Split modifier or check Auto Smooth in Data tab > Normals and set the andgle you need. Then parts of the mesh will be smooth, others - flat:



When joining several meshes with different split angles used

In this case it may be easier to use Edge Split modifier and apply it. It will create double vertices that will make shading look depending on angle you've selected and after joining meshes even with different angle of splitting normals they all will continue look like they did before.

In other cases

You may want to use Auto Smooth as there will be no extra modifier in stack and no double vertices so the mesh will be easy to edit.