Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Mysql (http://www.forosdelweb.com/f86/)
-   -   Obtener la referencia o el foreign de una tabla (http://www.forosdelweb.com/f86/obtener-referencia-foreign-tabla-608423/)

fhonorato 22/07/2008 21:10

Obtener la referencia o el foreign de una tabla
 
Hola, siempre leo soluciones y es la primera vez que no la encuentro ... creo :S

bueno, al echo... la cosa es que necesito obtener de donde viene un campos...

por ejemplo ... existe la tabla padres e hijos... y en hijos un campo con la ID del padre, ok eso lo hago y todo...

pero necesito algun comando que me devuelva del mysql que hijos tiene un campo que hace refenrencia a padres ... se entiende? ... yo se en este caso, que hijos tiene referencia a padre o viceversa :S ... pero necesito saber cuando no lo se ^^ jojo que gracioso...

no se si exista algo como describe table .. o algo asi (describe no, muestra otro tipo de informacion) ... ahh! !! y con references tampoco.. poque no altera ninguna estructura de la tabla y si la altera nose como obtener esa info... yo creo que es por foreign keys .. pero nose como obtenerla (creo que eso ya lo he dicho mucho)

ok, gracias desde ya ... :D :aplauso::aplauso::aplauso:

quimfv 23/07/2008 00:43

Respuesta: Obtener la referencia o el foreign de una tabla
 
No se te entiende!!

El id padre de la tabla hijos debe ser una FK referenciada al id de la tabla padres, eso te impedirá entrar hijos relacionados a padres inexistentes, si además declaras NOT NULL el idpadre de la tabla hijos no podras entrar hijos sin padres...

en cuanto a listar los hijos con los nombres de los padres la consulta es sencilla

Select campos hijos, campos padres from hijos inner join padres on hijos.idpadre=padres.id;

Si no te explicas mejor no se si te he respondido....

Quim

fhonorato 23/07/2008 08:10

Respuesta: Obtener la referencia o el foreign de una tabla
 
jeje, pues no .. mi duda no va por el tema de seleccion de la informacion de los datos o tuplas, sino de la informacion logica o fisica del campo ... por ejemplo cuando se hace un DESCRIBE ... necesito un comando "asi" para ver la foreing o references de una tabla a otras...


igual gracias quim por tu ayuda, pero es un poco mas profunda..

Genetix 23/07/2008 09:51

Respuesta: Obtener la referencia o el foreign de una tabla
 
prueba con esto

Código:

SELECT  CONSTRAINT_NAME as constraint_name,
                                    REFERENCED_TABLE_SCHEMA as fkschema,
                                    TABLE_NAME as table_name,
                                    COLUMN_NAME as column_name,
                                    REFERENCED_TABLE_NAME as references_table,
                                    REFERENCED_COLUMN_NAME as references_field,
                                    concat("FOREIGN KEY") as constraint_type
                                FROM

                                    `INFORMATION_SCHEMA`.`KEY_COLUMN_USAGE`
                                WHERE
                                        REFERENCED_TABLE_NAME IS NOT NULL
                                        AND TABLE_NAME = 'tu_tabla'
                                        AND TABLE_SCHEMA = 'tu_db';


fhonorato 23/07/2008 10:08

Respuesta: Obtener la referencia o el foreign de una tabla
 
no me devuelve nada :S

Genetix 23/07/2008 10:16

Respuesta: Obtener la referencia o el foreign de una tabla
 
Al parecer solo funciona con tablas InnoDb

fhonorato 23/07/2008 11:14

Respuesta: Obtener la referencia o el foreign de una tabla
 
pues si la solucion creando una tabla de referencias.. quizas no es lo mas optimo en GENERAL pero para mi codigo me di cuenta que si lo es, asi me ahorro muchoooo tiempo, codigo y otras cosas.

en todo caso, si alguien tiene info o solucion bienvenida :D

Genetix 23/07/2008 11:26

Respuesta: Obtener la referencia o el foreign de una tabla
 
Por que no conviertes tus tablas a InnoDb, asi te evitas de tener que crear tablas adicionales.

quimfv 23/07/2008 11:42

Respuesta: Obtener la referencia o el foreign de una tabla
 
Quiero ver que FK tengo definidas en mis tablas, como puedo verlo?

Código:

SELECT  CONSTRAINT_NAME as constraint_name,
                                    REFERENCED_TABLE_SCHEMA as fkschema,
                                    TABLE_NAME as table_name,
                                    COLUMN_NAME as column_name,
                                    REFERENCED_TABLE_NAME as references_table,
                                    REFERENCED_COLUMN_NAME as references_field,
                                    concat("FOREIGN KEY") as constraint_type
                                FROM

                                    `INFORMATION_SCHEMA`.`KEY_COLUMN_USAGE`
                                WHERE
                                        REFERENCED_TABLE_NAME IS NOT NULL
                                        AND TABLE_NAME = 'tu_tabla_hija'
                                        AND TABLE_SCHEMA = 'tu_db';

En innoDB funciona a la perfección indica que campos de la tabla hija estan referenciados a que campos de la tabla padre.
A la inversa no da ningun resultado.

Siempre se aprenden cosas!!!

Quim

fhonorato 23/07/2008 12:47

Respuesta: Obtener la referencia o el foreign de una tabla
 
pues lo que dice genetiX :
Cita:

Iniciado por Genetix (Mensaje 2504002)
Por que no conviertes tus tablas a InnoDb, asi te evitas de tener que crear tablas adicionales.

es cierto, pero me di cuenta que "lo que estoy haciendo" es mas util generar la tabla porque le doy una utilidad mayor... :D igual se agradece su ayuda :D


La zona horaria es GMT -6. Ahora son las 05:22.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.