سلام.
وقتی میخواید 3 جدول رو با هم join کنید، ابتدا جدول اول و دوم رو join میکنید (تا اینجا درست نوشتی)، نتیجه این join شدن میشه یه جدول. حالا باید این جدول نتیجه رو با جدول سوم دوباره join کنی تا نتیجه نهایی بدست بیاد (اینجا رو اشتباه کردی و اومدی دوباره با maintbl که قبلا join شده، دوباره join کردی).
اینطوری بنویس :
com.CommandText = "Select name from  dbo.nametbl " + 
"JOIN maintbl ON nametbl.nameid = maintbl.nameid " +
"JOIN numtbl ON numtbl.numid = maintbl.numid " +"WHERE (name=@name)";

یه سوال : این همه join کردی که فقط یه ستون رو نمایش بدی؟؟؟؟ (منظورم ستون name هست)