PDA

Ver la Versión Completa : consulta sql (obtener los ultimos niveles)


Caro
03-05-2006, 17:36:00
Hola a todos

No tengo idea de como armar esta consulta, tengo lo siguiente en mi tabla


codigo nivel
01 1
0101 2
010101 3
010102 3
01010201 4
01010202 4
01010203 4
0102 2


lo que yo quiero obtener es lo siguiente, que serian los ultimos niveles


codigo nivel
010101 3
01010201 4
01010202 4
01010203 4
0102 2


espero se entienda, la tabla tiene mas campos como descripcion y otros, les agradecere un monton si me pudieran ayudar, gracias por adelantado y que tengan un bonito dia.

Estoy utilizando como Base de Datos ACCESS

Neftali [Germán.Estévez]
03-05-2006, 17:54:02
Pues no lo entiendo.
¿Qué quiere decir con los últimos niveles?
No le encuentro ninguna lógica a esos resultados (debo estar muy espeso)

¿Porqué aparecen los tres elementos de nivel 4?
¿Porqué aparece un sólo elemento de nivel 3 (y es el 010101 y no el 010102)?
¿Y en cambio de nivel 2 aparece el 0102?

Caro
03-05-2006, 18:04:15
De verdad lo siento mucho sino se entiende tratare de explicar un poco mejor


codigo descripcion nivel
01 MATERIAL DE ESCRITORIO 1
0101 Lapiceros 2
010101 Lapiceros Azules 3
010102 Lapiceros Rojos 3


mas o menos asi se llenaran mis items, lo que me dijeron es que en algunos casos pueden llegar a mas niveles, y lo que se quiere es recuperar los que tengan el ultimo nivel que llegarian a ser los de introducción de datos, aun no se me ocurre un ejemplo para ese caso, creo que me estoy enrredando demasiado.

david duarte
19-05-2006, 17:06:05
ok, y el cuarto nivel que significa???

01 primer nivel material de escritorio

01 Segundo nivelLapiceros

01Lapiceros Rojos
02 Lapiceros AzulesTercer Nivel


010101
010102

010102????
y el cuarto que significa??
Cantidad, o es un identificador especial??

Saludos!!!!

fer21unmsm
19-05-2006, 19:02:15
Hola a todos

No tengo idea de como armar esta consulta, tengo lo siguiente en mi tabla


codigo nivel
01 1
0101 2
010101 3
010102 3
01010201 4
01010202 4
01010203 4
0102 2

lo que yo quiero obtener es lo siguiente, que serian los ultimos niveles


codigo nivel
010101 3
01010201 4
01010202 4
01010203 4
0102 2

espero se entienda, la tabla tiene mas campos como descripcion y otros, les agradecere un monton si me pudieran ayudar, gracias por adelantado y que tengan un bonito dia.

Estoy utilizando como Base de Datos ACCESS

Hola Caro hace tiempo que no agarro SQL así es que quizá sólo te puedo ayudar con la lógica, puedes utilizar una consulta recursiva o un procedimiento almacenado(usando cursores) con un while en la cual:

primero haces una consulta para capturar todos los registro cuyo nivel sea el mayor (en este caso 4), luego haces un while o recursividad, comparando todos los registros del nivel anterior en (en este caso 3), verificas si los codigos de dichos registros son subcadenas de los códigos de los resultados generados en la primera consulta, si hay algún registro que no sea una subcadena entonces lo agregas a tu tabla de resultados final, y luego vuelves a hacer lo mismo pero para el nivel 2 , así sucesivamente hasta llegar al 1.

Bueno si puedo trataré de hacerlo y te mando un ejemplo más tarde ¿vale?

Saludos.;)

waltergomez
19-05-2006, 19:31:05
Si entiendo bien lo que necesitas son los ultimos items facturables dado que los anteriores son agrupaciones (linea, marca, etc). Es una forma similar a las usadas en las cuentas contables.
Creo que la forma que perseguis no es muy comoda y seguramente te complicará mas de un proceso.
Debrias agregar un campo para definir si es o no facturable. Porque la cantidad de niveles es variable para distintos productos,
y siendo variable es complicado identificar el ultimo dado que por ej. el nivel 3 puede ser el ultimo nivel para un grupo y el 4 para otro y el 2 para otro, etc.
Agregando un campo que te indique si es o no facturable lo solucionas facilmente, ademas te sirve para hacer busquedas rapidas.

Salu2,

david duarte
25-05-2006, 00:39:51
Cómo lo quieres hacer, por medio de una query o como???

Se me ocurre que:

Registro por registro vayas tomando la longitud y la dividas entre 2 (que es lo que estas tomando como base en los niveles) y te va a dar el numero de niveles, ese resultado lo guardas en un campo de la base de datos, que se podria llamar nivel o algo asi, y posteriormente armas tu query para que selecciones los niveles que quieras!!!!

Espero que te haya servido de algo.

Creo que todavia no entiendo del todo bien que es lo que quieres hacer

Saludos!!!!

El_TxEtXu
25-05-2006, 16:12:55
Hooola,

¿Qué estructura de tablas tienes? ¿está todo en una sóla tabla?
Si es así a lo mejor te trae cuenta modelar otra vez esto ya que al estar hablando de categorias y subcategorias, aplicar la lógica del modelo entidad-relación puede ayudarte. ACCESS tiene una sección para definir relaciones entre tablas de forma gráfica muy intuitiva. Si lo haces así es muy sencillo sacar una categoria y su subcategorias mediante el JOIN.

Si lo tienes todo en una tabla y no tienes posibilidad de modificarlo lo único que creo que puedes hacer es currarte una consulta hiper-bestial tratando la cadena que hace de código dividiendo en subcadenas.... (...pufff, ...y que el Dr. Peter Chen te pille confesado).

Saludos