Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-12-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Estado de las tablas de una base de datos

Hola pataliebres,

Recurro a vosotros porque me consta que sois unos monstruos. Además os estaré agradecido infinitamente si me echáis una mano, y, cuando no, no preocuparos, no pienso condenaros eternamente al infierno. Bueno. Al tema.

No sé si alguna vez necesitasteis conocer el estado de las tablas de una base de datos MySQL, pero, si es así, seguramente usasteis una consulta similar a esta:

Código SQL [-]
SHOW TABLE STATUS FROM nombre_db;

Para obtener el estado de todas las tablas de la base de datos "nombre_db", o, también acaso algo similar a esta otra consulta SQL:

Código SQL [-]
SHOW TABLE STATUS FROM nombre_db LIKE 'nombre_tabla';

¿Verdad que sí? Ahora bien, ¿hay forma de conseguir el estado de más de una tabla en concreto? He comprobado que podría escribir la consulta SQL tal que así:

Código SQL [-]
SHOW TABLE STATUS FROM nombre_db LIKE '%comodin';

Y funciona. Pero, no es, precisamente, lo que ando buscando, pues, precisamente, estoy tratando de obtener el estado de diferentes tablas, que, pueden variar de "prefijo", pero, cuyo nombre es siempre el mismo. Es decir, puedo tener en una base de datos estas tablas:

Código:
gb_links
gb_posts
gb_terms
links
posts
terms
Como véis, hay seis tablas, las tres primeras tienen el prefijo "gb_" y las otras tres no tienen prefijo alguno. El nombre de las tablas es el mismo, sólo se distinguen en el posible prefijo, pero, suponiendo que algunas no tengan prefijo alguno (lo que es posible) la siguiente consulta no arrojaría los resultados esperados si queremos conseguir el estado de una tabla y no otra:

Código SQL [-]
SHOW TABLE STATUS FROM nombre_db LIKE '%links';

Pero,... creo que me estoy yendo por las ramas. Ahora mismo el asunto está solucionado porque obtengo el estado de las tablas de la base de datos una a una, es decir, de este modo se evitan ambigüedades, pero, mi pregunta es, ¿puedo conseguir el estado de varias tablas en concreto en una sola consulta SQL?

Puedo conseguir el estado de todas las tablas, indicando sólo el nombre de la base de datos, pero, esto no sirve para mis propósitos. Puedo obtener el estado de las tablas una por una, y así el asunto funciona bien, pero, ¿sería posible conformar una consulta SQL que obtuviera el estado de ciertas tablas en concreto?

Yo probé con algo como:

Código SQL [-]
SHOW TABLE STATUS FROM nombre_db LIKE 'links', LIKE 'terms';

Lo que además de parecer una burrada, resulta en un error de sintaxis. También probé con cosas como:

Código SQL [-]
SHOW TABLE STATUS FROM nombre_db LIKE 'links', 'terms';

Pero, ocurre lo mismo: no se respeta la sintaxis. En fin. Tal vez esté comiéndome el coco demasiado, porque, al fin y al cabo no cuesta mucho traer el estado de las nueve tablas implicadas, y, además, estas consultas se hacen sólo una vez en la "vida" del programa.

Por otro lado, ignoro si me estoy perdiendo algo y, efectivamente, puedo comprobar el estado de varias tablas en concreto a la vez. Uff... menudo rollo me ha salido... lo envío... no lo envío... lo envío... lo enviaré, pero, os pido disculpas de antemano.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #2  
Antiguo 12-12-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Lástima que no exista "CONTAINING" en MySql (al menos como palabra reservada), eso te quitaría el problema de los prefijos. ¿puedes implementar una UDF?. En Firebird realiza búsquedas case insensitive.

Has puesto todos los nombres de las tablas en minúsculas, no sé si en realidad habría alguna con letras en mayúsculas que incordiara un poco.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Agregar tablas a una base de datos ya creada egostar Firebird e Interbase 9 15-08-2007 03:29:11
Eliminar Tablas y tamaño en Base de datos carlosegs11 Tablas planas 4 09-07-2007 03:55:03
Una Consulta con registros de dos tablas en Diferentes Base de Datos k_rito Conexión con bases de datos 2 17-05-2007 17:43:55
Guardar en 1 base de datos SQL, datos procedentes de 2 tablas distintas adaypr C++ Builder 1 05-09-2006 11:56:33
Referencia a muchas tablas de la base de Datos dcidt MySQL 7 29-09-2005 17:04:49


La franja horaria es GMT +2. Ahora son las 14:30:47.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi