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

Problema con create table index

Estas en el tema de Problema con create table index en el foro de Mysql en Foros del Web. Hola. Tengo este codigo: oServer:Query("CREATE TABLE IF NOT EXISTS gopmult(" +; "LIN INT(3) NOT NULL DEFAULT 0 COMMENT 'control lineas'," +; "TP1 VARCHAR(4) NULL DEFAULT ...
  #1 (permalink)  
Antiguo 12/03/2012, 14:13
 
Fecha de Ingreso: marzo-2012
Mensajes: 53
Antigüedad: 12 años, 8 meses
Puntos: 3
Problema con create table index

Hola.
Tengo este codigo:


oServer:Query("CREATE TABLE IF NOT EXISTS gopmult(" +;
"LIN INT(3) NOT NULL DEFAULT 0 COMMENT 'control lineas'," +;
"TP1 VARCHAR(4) NULL DEFAULT '' COMMENT 'tp'," +;
"NOMBRE1 VARCHAR(50) NULL DEFAULT '' COMMENT 'cuenta'," +;
"INDEX gopmult (LIN) )"+;
"ENGINE = InnoDB ;")

oServer:Query("INSERT INTO gopmult (lin) VALUES ('"+cValToChar(nLin)+"')")

Pero al consultar los datos a travez de un objeto xBrowse no los presenta ordenados por la col LIN. Qué estoy haciendo mal?, Pueden ayudarme?

Saludos
  #2 (permalink)  
Antiguo 12/03/2012, 14:23
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: Problema con create table index

Normalmente MySQL ordena en base a la PK, y en tu tabla no se ve ninguna.
Tampoco estás mostrando cuál es la consulta que ejecuta el objeto, auque podríamos inferir que es un SELECT * ... (lo cual no es una buena idea).
Por otro lado, lo más simple es incluir en la consulta el ORDER BY ..., para que ordene en bazse a algún criterio específico.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 12/03/2012, 14:35
 
Fecha de Ingreso: marzo-2012
Mensajes: 53
Antigüedad: 12 años, 8 meses
Puntos: 3
Respuesta: Problema con create table index

gnzsoloyo, gracias por responder. Seguiré tus indicaciones.

Otra consulta, entonces no se pude usar una tabla sin PK?
Lo que pasa es que forzosamente debo introducir claves duplicadas pero ordenadas con un index no PK, ya que este no permite duplicidades en la clave.

Una mas: Si a esta tabla le borro los items con DELETE, pierde el indice mencionado?
Esto es porque necesito borrar los items e insertar desde otra tabla identica, de manera que los nuevos registros siempre queden ordenados.

TRUNCATE TABLE, sé que elimina la tabla y la recrea, pero... ¿pierde su indice?
Agradezco sinceramente cualquier ayuda.
Saludos

Última edición por falegria230349; 12/03/2012 a las 14:37 Razón: falta de informacion
  #4 (permalink)  
Antiguo 12/03/2012, 14:46
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: Problema con create table index

Cita:
Otra consulta, entonces no se pude usar una tabla sin PK?
No. No se deben usar tablas sin PK. Eso no existe.
Cita:
Lo que pasa es que forzosamente debo introducir claves duplicadas pero ordenadas con un index no PK, ya que este no permite duplicidades en la clave.
Las PK nunca pueden estar duplicadas. Si esa clave está duplicada, entonces no es PK de la tabla y la tabla es una tabla secundaria (cardinalidad 1:N), o bien está sin normalizar.
El ordenar la salida de una forma determinada no requiere de las PK, sino del ORDER BY.
Cita:
Una mas: Si a esta tabla le borro los items con DELETE, pierde el indice mencionado?
Esto es porque necesito borrar los items e insertar desde otra tabla identica, de manera que los nuevos registros siempre queden ordenados.
DELETE borra contenido, pero no reinicia los autoincrementales. Pero no es tu caso (no hay AI).
TRUNCATE borra, reiniciando autoincrementales.

Cita:
TRUNCATE TABLE, sé que elimina la tabla y la recrea, pero... ¿pierde su indice?
Los índices son estructuras fijas definidas en la creación de la tabla, no datos. Sólo se pueden borrar si eliminas la tabla o los borras expresamente, con
Código MySQL:
Ver original
  1. DROP INDEX nombreIndice
.

Tip: Necesitas ponerte a estudiar profundamente todo el tema de bases de datos y SQL, si quieres realmente seguir sin tropezar a cada paso.
La ayuda que te podemos dar está también limitada por lo que conozcas de estos temas. Muchas cosas necesitan de conocimientos mas o menos avanzados.
__________________
¿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 12/03/2012, 14:59
 
Fecha de Ingreso: marzo-2012
Mensajes: 53
Antigüedad: 12 años, 8 meses
Puntos: 3
Respuesta: Problema con create table index

Gracias, nuevamente, gnzsoloyo.
Solo quería decirte que tengo un sistema de contabilidad con un avance del 90% aprox. usando MySql server 5.0 y solo algunas "cositas tontas" que me abruman por el hecho de venir de tablas DBF con las que he trabajado en muchos lenguajes y desde hace aprox 20 años. Claro que hay ciertas funciones creadas con esos lenguajes que se me está haciendo dificil traducirlas a SQL (MySql).
Saludos.
  #6 (permalink)  
Antiguo 12/03/2012, 17:11
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: Problema con create table index

El problema es que en el punto que estás, lo mejor que puedes hacer es empezar a pensar en SQL.
¿Puedes explicar un poco más al detalle qué es lo que almacenas en esa tabla y con qué otras está relacionada?
Puede que el problema pase por cuestiones de diseño, más que de consultas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: create, index, query, table
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 16:03.