Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   consulta sql (obtener los ultimos niveles) (https://www.clubdelphi.com/foros/showthread.php?t=31254)

Caro 03-05-2006 17:36:00

consulta sql (obtener los ultimos niveles)
 
Hola a todos

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

Código:

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

Código:

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

Código:

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

Cita:

Empezado por Caro
Hola a todos

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

Código:

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

Código:

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

¿Por qué no reestructura los datos?
 
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


La franja horaria es GMT +2. Ahora son las 02:44:41.

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