Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Mostrar campo (nombre) de otra tabla por medio de la Llave Foránea

Estas en el tema de Mostrar campo (nombre) de otra tabla por medio de la Llave Foránea en el foro de SQL Server en Foros del Web. Hola amig@s Iré al "grano". En SQL Server 2012 tengo 2 tablas : tbl_personas (TABLA) ................................. pk_aut_persona (Llave Primaria int) fk_int_nacionalidad (int) [es llave foránea ...
  #1 (permalink)  
Antiguo 11/03/2015, 00:30
Avatar de ghidalgoram  
Fecha de Ingreso: marzo-2008
Ubicación: Costa Rica
Mensajes: 446
Antigüedad: 16 años, 8 meses
Puntos: 7
Pregunta Mostrar campo (nombre) de otra tabla por medio de la Llave Foránea

Hola amig@s
Iré al "grano".


En SQL Server 2012 tengo 2 tablas:

tbl_personas (TABLA)
.................................
pk_aut_persona (Llave Primaria int)
fk_int_nacionalidad (int) [es llave foránea con la tabla "tbl_nacionalidades"]
++++++++++++++++
txt_nombre (varchar 50)


y


tbl_nacionalidades (TABLA)
.................................
pk_aut_nacionalidad (Llave Primaria int). También es Llave Foránea en la tabla "tbl_personas"
++++++++++++++++
txt_nacionalidad (varchar 50)

PROBLEMA
Al hacer el siguiente SELECT:


Código SQL:
Ver original
  1. SELECT * FROM dbo.tbl_personas

Devolverá:


...........................................
1 (pk_aut_persona) | 1 (fk_int_nacionalidad) | Pelé (txt_nombre)
2 (pk_aut_persona) | 1 (fk_int_nacionalidad) | Jordan (txt_nombre)
3 (pk_aut_persona) | 3 (fk_int_nacionalidad) | Navas(txt_nombre)
...



Pero... yo deseo mostrar, en lugar del ID de la llave foránea (fk_int_nacionalidad), el nombre del país (el valor correspondiente del campo "txt_nacionalidad") que hace referencia. Por ejemplo:



1 (pk_aut_persona) | Brasil (txt_nacionalidad) | Pelé (txt_nombre)
2 (pk_aut_persona) | Estados Unidos (txt_nacionalidad) | Jordan (txt_nombre)
3 (pk_aut_persona) | Costa Rica (txt_nacionalidad) | Navas(txt_nombre)
...



Se que se necesitan consultar las 2 tablas.


Amigos, cómo puedo mostrar el nombre del país de la forma que indico en el ejemplo anterior ?
__________________
Loading...
  #2 (permalink)  
Antiguo 11/03/2015, 00:36
Avatar de ghidalgoram  
Fecha de Ingreso: marzo-2008
Ubicación: Costa Rica
Mensajes: 446
Antigüedad: 16 años, 8 meses
Puntos: 7
De acuerdo Respuesta: Mostrar campo (nombre) de otra tabla por medio de la Llave Foránea

Les comento que ya encontré la solución. Anteriormente, no me funciona con otras combinaciones. La dejo aquí, por si alguien la necesita.

Código SQL:
Ver original
  1. SELECT tp.pk_aut_persona, txt_nombre, (SELECT tn.txt_nacionalidad FROM tbl_nacionalidades tn WHERE tn.pk_aut_nacionalidad=tp.fk_int_nacionalidad) Pais
  2. FROM dbo.tbl_personas tp

Gracias de todos modos.
Saludos !!!
__________________
Loading...
  #3 (permalink)  
Antiguo 11/03/2015, 08:07
 
Fecha de Ingreso: febrero-2015
Mensajes: 89
Antigüedad: 9 años, 9 meses
Puntos: 1
Respuesta: Mostrar campo (nombre) de otra tabla por medio de la Llave Foránea

No era suficiente con un inner join ?
  #4 (permalink)  
Antiguo 11/03/2015, 08:10
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Mostrar campo (nombre) de otra tabla por medio de la Llave Foránea

La verdad, es una consulta muy ineficiente.
tu problema es de manual básico, es raro que no hayas encontrado un ejemplo útil...
Código SQL:
Ver original
  1. SELECT
  2.     tp.pk_aut_persona,
  3.     txt_nombre,
  4.     tn.txt_nacionalidad Pais
  5. FROM dbo.tbl_personas tp INNER JOIN tbl_nacionalidades tn  ON tn.pk_aut_nacionalidad=tp.fk_int_nacionalidad
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 11/03/2015, 09:02
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Mostrar campo (nombre) de otra tabla por medio de la Llave Foránea

y casi aseguro una respuesta del tipo, "esa solucion no es la mas optima pero fue para salir del paso" jejejejeje
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:45.