Si pretendes usar sql dinámico te recomiendo esta lectura obligada (siempre leo la version en ingles, no se si esta en español esté bien traducida):
http://www.hayes.ch/sql/sql_dinamico.html
Creo que tener 3 versiones de la misma tabla es un error de diseño. Mejor sería tener una sola tabla son los 3 (hasta N) lenguajes y simplemente agregar el identificador de lenguaje como un campo más. Así ni sql dinamico ni IFs interminables:
Código:
SELECT TOP 1 mbr.nombre, mbr.pais, mbr.pais_cod, mbr.provincia, vip.id
FROM p_miembros AS mbr LEFT OUTER JOIN p_top vip ON mbr.id_usuario = vip.id
WHERE mbr.id_usuario = @mbr_id
AND lengua = @lengua
UPDATE p_miembros SET visitas = visitas + 1, ultima = GetDate()WHERE id_usuario = @mbr_id
AND lengua = @lengua