Título: Saber con que tabla esta relacionada. Publicado por: Baaaw Oic en 3 Marzo 2010, 15:44 pm Tengo una BD con InnoDB, la tabla personal esta unida a usuario.
Código
Quiero saber si existe la forma de saber el nombre de la tabla a travez de una relacion ... por ejemplo cuando hago un show columns from usuario me aparece en la columna PRI la caracteristica MUL (esto indica que es una relacion) .. apartir de eso quiero saber si existe alguna forma de saber el nombre de la tabla y el campo que se unen con esa relacion. Gracias. Título: Re: Saber con que tabla esta relacionada. Publicado por: ^Tifa^ en 3 Marzo 2010, 16:09 pm Citar MUL (esto indica que es una relacion) MUL indica que un indice puede contener valores repetidos no unicos. Digase un indice UNIQUE no puede contener valores repetidos pero, si puede contener valores NULL repetidos que es lo que indica MUL que un indice puede contener valores repetidos ;) Citar quiero saber si existe alguna forma de saber el nombre de la tabla y el campo que se unen con esa relacion. SHOW TABLE STATUS\G SHOW CREATE TABLE nombre_tabla\G Título: Re: Saber con que tabla esta relacionada. Publicado por: Baaaw Oic en 3 Marzo 2010, 16:12 pm Entonces MUL no simpre significa que sera un FK .. si es asi entonces cual es la forma indicada para saber cuando es una FK.
EDITO: Esto no anda.. Citar SHOW TABLE STATUS\G Esto anda .... lo da muy detallado Citar SHOW CREATE TABLE nombre_tabla\G Existe otra forma de hacerlo ¿? Gracias Título: Re: Saber con que tabla esta relacionada. Publicado por: Shell Root en 3 Marzo 2010, 16:24 pm Algo como estó?
Código Resultado: Código: tblPrestamos intIDUsuario tblUsuario intID FK_tblPrestamos_tblUsuario Título: Re: Saber con que tabla esta relacionada. Publicado por: ^Tifa^ en 3 Marzo 2010, 16:28 pm Citar Entonces MUL no simpre significa que sera un FK .. si es asi entonces cual es la forma indicada para saber cuando es una FK. MUL no hace referencia a cuando un indice es una llave foreanea o no, es sencillamente una caracteristica de ese indice que dice que ese campo puede guardar valores repetidos que pueden ser NULL o pueden ser valores reales repetidos (siempre y cuando ese indice no sea UNIQUE sino INDEX o KEY) No me consta que existe la caracteristica FK en las descripciones de las tablas, ya que esto no es una caracteristica de un indice. Citar Esto no anda.. Citar SHOW TABLE STATUS\G No??? que version de MySQL es?? Bueno te sirve SHOW CREATE como ya viste y igual te sirve indagar en el esquema information_schema : select * from tables where table_name = 'tu_tabla'\G Si existe una forma de utilizar alguna clausula de descripcion en una tabla para que te exponga su relacion de FK con otra tabla, yo particularmente no la he visto, existen consultas como las que te expongo que te muestran esa informacion, pero en la descripcion basica de una tabla (DESCRIBE TABLE) no... Ah no ser que hagas uso de las consultas que te digo, o guardar esa info en variables como expone tooRllehS@xelA o crear un procedimiento, una funcion UDF en fin... para guardar esto. Pero particularmente existe un comando dentro ya del motor para ello... No hasta lo que me consta. Título: Re: Saber con que tabla esta relacionada. Publicado por: Baaaw Oic en 3 Marzo 2010, 16:33 pm Versión del cliente: 5.0.51a Supongo que tengo que reemplazar TABLE_CONSTRAINTS por referential_constraintsNo anda :S (http://img31.imageshack.us/img31/8423/sinttulo1lv.png) Título: Re: Saber con que tabla esta relacionada. Publicado por: ^Tifa^ en 3 Marzo 2010, 16:38 pm Código
No te olvides del punto y coma que separa las consultas ;) Título: Re: Saber con que tabla esta relacionada. Publicado por: Baaaw Oic en 3 Marzo 2010, 16:41 pm QUe version debo usar .. la ultima mejor estable ¿?
Título: Re: Saber con que tabla esta relacionada. Publicado por: ^Tifa^ en 3 Marzo 2010, 16:49 pm Dependera tus necesidades... pero al menos al partir de la 5.0.1 es mejor porque puedes tener procedimientos, crons adentro del motor, funciones, etc. Pero dependera si vas o no a dar uso de esto... al menos me consta que para MySQL 5.4.x, Oracle se empeno en mejorar sobremanera y optimizar los motores InnoDB para las consultas JOINS y Subconsultas.
Por cierto, te convendria crear un procedimiento y guardar la consulta ante expuesta, asi solo te basta con llamar el procedimiento para ver que FK tiene cual tabla: Código
Mas o menos algo asi... quisiera acomodartelo para ver si funciona pero ando en el trabajo ;) luego cada vez que quieras ver las Fk de una tabla.. llamas el procedimiento pasandole como parametro el nombre de la tabla que quieres ver. CALL procedimiento(tu_tabla); Título: Re: Saber con que tabla esta relacionada. Publicado por: Baaaw Oic en 3 Marzo 2010, 17:35 pm Pues el proc me tira error porque al parecer los campos de la version que tienen es diferente a la que yo tengo ... actualmente tengo el AppServ AppServ 2.5.10 que tiene:
* Apache 2.2.8 * PHP 5.2.6 * MySQL 5.0.51b * phpMyAdmin-2.10.3 Que version estas usando tu tooRllehS@xelA Gracias. Título: Re: Saber con que tabla esta relacionada. Publicado por: Shell Root en 3 Marzo 2010, 23:34 pm Que version estas usando tu tooRllehS@xelA Olvide decir, que lo habia hecho en SQL Server 2008Título: Re: Saber con que tabla esta relacionada. Publicado por: Baaaw Oic en 4 Marzo 2010, 00:38 am WTF ¡¡ con razon no salia... ahora tendre que leer sobre esa bd information_schema .. haber como hago .. si alquien me ayuda a hacer las equivalencias estaria agradecido.. gracias y saludos.
Título: Re: Saber con que tabla esta relacionada. Publicado por: Baaaw Oic en 4 Marzo 2010, 14:54 pm La consulta quedo asi:
Código
Gracias a: tooRllehS@xelA ^TiFa^ Por el las respuestas. Saludos. |