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

[SOLUCIONADO] Llave foránea con texto de referencia (curiosidad)

Estas en el tema de Llave foránea con texto de referencia (curiosidad) en el foro de Mysql en Foros del Web. Buenas... Habrá alguna forma por mysql de referenciar un campo a un idenficador de una llave foranea...? me explico: Tengo dos tablas PAIS - id_pais ...
  #1 (permalink)  
Antiguo 14/04/2016, 09:18
Avatar de gersveo  
Fecha de Ingreso: julio-2008
Mensajes: 145
Antigüedad: 15 años, 9 meses
Puntos: 5
Llave foránea con texto de referencia (curiosidad)

Buenas...
Habrá alguna forma por mysql de referenciar un campo a un idenficador de una llave foranea...?
me explico:
Tengo dos tablas
  1. PAIS
    - id_pais (entero autoincrementable)
    - nombre_pais
  2. CIUDAD
    - id_ciudad (entero autoincrementable)
    - nombre_ciudad
    - id_pais (llave foranea)
Ahora quiero listar la tabla ciudad
Código MySQL:
Ver original
  1. SELECT * FROM 'CIUDAD'

y que en el resultado los campos sean
  • id_ciudad
  • nombre_ciudad
  • id_pais
  • fk.id_pais.txtReferencia.nombre_pais

se podría hacer algo así..? pero directo en la bd?
sé que se podría hacer de otra forma, pero mi pregunta es si eso lo puede hacer mysql de una vez...?
  #2 (permalink)  
Antiguo 14/04/2016, 09:28
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Llave foránea con texto de referencia (curiosidad)

Tienes que hacer un join entre las dos tablas.
__________________
Aviso: No se resuelven dudas por MP!
  #3 (permalink)  
Antiguo 14/04/2016, 09:42
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Llave foránea con texto de referencia (curiosidad)

En tu esquema es algo tan simple como:
Código SQL:
Ver original
  1. SELECT c.id_ciudad, nombre_ciudad, p.id_pais, nombre_pais
  2. FROM ciudad c INNER JOIN pais p ON p.id_pais = c.id_pais;


Es, como ya te dio a entender Malenko, una consulta básica, de tutorial muy elemental.

¿Cual es la duda?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 14/04/2016, 10:17
Avatar de gersveo  
Fecha de Ingreso: julio-2008
Mensajes: 145
Antigüedad: 15 años, 9 meses
Puntos: 5
Respuesta: Llave foránea con texto de referencia (curiosidad)

Cita:
Iniciado por gnzsoloyo Ver Mensaje
En tu esquema es algo tan simple como:
Código SQL:
Ver original
  1. SELECT c.id_ciudad, nombre_ciudad, p.id_pais, nombre_pais
  2. FROM ciudad c INNER JOIN pais p ON p.id_pais = c.id_pais;


Es, como ya te dio a entender Malenko, una consulta básica, de tutorial muy elemental.

¿Cual es la duda?
Gracias por las respuestas... tal vez no me hice entender... si... sé que con un join se puede traer el nombre del país...

Es una curiosidad que tengo...
se podrá hacer con una sola tabla...? sin necesidad del join..? o sin concatenar en el where..?

bueno en realidad la curiosidad surgió fue... cuando inserté un registro en una tabla usando phpMyAdmin... vi que cuando estaba en la caja de "id_pais" al lado derecho había un link "Mostrar los valores foráneos", hice click y me abrió una ventana en la que podía hacer la búsqueda del valor foráneo... pero solo lo hacía sobre el "id_pais" y si buscaba "chile" o "argentina" no arrojaba resultado... si escribia un número... pues... me traía ese número...

de ahí la curiosidad "texto de referencia para una llave foranea"

Última edición por gersveo; 14/04/2016 a las 10:22
  #5 (permalink)  
Antiguo 14/04/2016, 10:25
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Llave foránea con texto de referencia (curiosidad)

Cita:
bueno en realidad la curiosidad surgió fue... cuando inserté un registro en una tabla usando phpMyAdmin... vi que cuando estaba en la caja de "id_pais" al lado derecho había un link " Mostrar los valores foráneos Mostrar los valores foráneos", hice click y me abrió una ventana en la que podía hacer la búsqueda del valor foráneo... pero solo lo hacía sobre el "id_pais" y si buscaba "chile" o "argentina" no arrojaba resultado... si escribia un número... pues... me traía ese número...
phpMyadmin te muestra eso porque simplemente sólo puede analizar cuál es el conjunto de valores válidos de acuerdo a la tabla a la que hace referncia. No hace otra cosa mas que leer el set de valores de esa PK. Pero NO PUEDE analiza los nombres porque no existe forma en que pueda adivinar cuál de todos es el campo de esa tabla que el creador de la misma usó para agregar datos que permitan identificar valores por otro concepto.
phpMyadmin no puede deducir eso, porque el campo bien podría llamarse "name", "title", o perfectamente ser "lkjhiuygvbhkj87876hjk"...
¿Cómo haces para que phpMyadmin pueda saberlo?

No hay modo.

phpMyadmin está diseñado para trabajar genéricamente en todo modelo de BBDD creado sobre MySQL, pero no se puede hacer rsponsable de qué es lo que los DBA hacen con eso.

Es TU trabajo crear las interfases de TU aplicación que le faciliten al usuario ese tipo de cosas. Pero las tienes que programar.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 14/04/2016, 13:40
Avatar de gersveo  
Fecha de Ingreso: julio-2008
Mensajes: 145
Antigüedad: 15 años, 9 meses
Puntos: 5
De acuerdo Respuesta: Llave foránea con texto de referencia (curiosidad)

Cita:
Iniciado por gnzsoloyo Ver Mensaje
phpMyadmin te muestra eso porque simplemente sólo puede analizar cuál es el conjunto de valores válidos de acuerdo a la tabla a la que hace referncia. No hace otra cosa mas que leer el set de valores de esa PK. Pero NO PUEDE analiza los nombres porque no existe forma en que pueda adivinar cuál de todos es el campo de esa tabla que el creador de la misma usó para agregar datos que permitan identificar valores por otro concepto.
phpMyadmin no puede deducir eso, porque el campo bien podría llamarse "name", "title", o perfectamente ser "lkjhiuygvbhkj87876hjk"...
¿Cómo haces para que phpMyadmin pueda saberlo?

No hay modo.

phpMyadmin está diseñado para trabajar genéricamente en todo modelo de BBDD creado sobre MySQL, pero no se puede hacer rsponsable de qué es lo que los DBA hacen con eso.

Es TU trabajo crear las interfases de TU aplicación que le faciliten al usuario ese tipo de cosas. Pero las tienes que programar.
Gracias por tu respuesta y tiempo...

Solo creí que al momento de crear la bd de alguna forma se podía decir que "nombre_pais" iba a ser el texto de referencia...

pero tengo una idea para hacer algo así... pero ya es carpintería...
es que estoy pensando en crear procesos automáticos... en la que si voy a mostrar algo de una tabla, solo tengo que enviar como se llama esta tabla y me liste los resultados... por ejemplo armar un <select> se necesita un id y texto que haga referencia, solo necesitaría dos campos, su llave primaria que podría ser identificada con "carpintería" y el texto de referencia que sería un campo fijo por tabla por ejemplo "REF" y que este contenga el campo que hace referencia a esa tabla que estoy consultando "nombre_pais", de ahí con más carpintería obtengo el campo texto de referencia armo el arreglo o array y enviaría id y REF...
todo esto solo pensando en no crear una clase y un método por cada tabla...
y solo sería una clase y método genérico para muchas tablas...


Tons no se puede...
gracias...

Etiquetas: bd, campo, llave, referencia, select, sql, tabla
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 08:27.