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

problema hijo padres sqlserver

Estas en el tema de problema hijo padres sqlserver en el foro de SQL Server en Foros del Web. Hola Amigos. Tengo un problema en mi trabajo y no se como solucionarlo. voy a ir al grano por si me pueden ayudar, estoy trabajando ...
  #1 (permalink)  
Antiguo 30/08/2012, 12:01
 
Fecha de Ingreso: septiembre-2006
Mensajes: 10
Antigüedad: 17 años, 6 meses
Puntos: 0
problema hijo padres sqlserver

Hola Amigos.
Tengo un problema en mi trabajo y no se como solucionarlo.
voy a ir al grano por si me pueden ayudar, estoy trabajando en SQLSERVER 2008 R2 Express.

tengo la siguiente tabla:

codigo '''''''' nivel
1 '''''''' 1
1.1 '''''''' 2
1.2 '''''''' 2
1.2.3 '''''''' 3
2 '''''''' 1
2.1 '''''''' 2

y lo que quiero es poder decir cual es el padre de 1.1 que en este caso seria 1
por lo tanto el resultado debería ser:

hijo '''''''' padre
1 '''''''' -
1.1 '''''''' 1
1.2 '''''''' 1
1.2.3 '''''''' 1.2
2 '''''''' -
2.1 '''''''' 2

tengo una consulta que es la siguiente:

SELECT CODIGO, NIVEL
from TABLA
where CODIGO like '1%' and NIVEL = 2

que me entrega todos los hijos del padre 1, pero no es lo que busco, no he podido hacerlo.. llevo horas en esto.. cualquier ayuda se lo agradecería mucho.
  #2 (permalink)  
Antiguo 30/08/2012, 12:36
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: problema hijo padres sqlserver

a ver necesitas una funcion asi para tu trabajo? y si la hago el credito es para mi o para ti??? Pero aqui esta lo que necesitas




Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. codigo VARCHAR(20),
  4. nivel INT
  5. )
  6.  
  7. INSERT INTO #temp VALUES ('1',1)
  8. INSERT INTO #temp VALUES ('1.1',2)
  9. INSERT INTO #temp VALUES ('1.2',2)
  10. INSERT INTO #temp VALUES ('1.2.3',3)
  11. INSERT INTO #temp VALUES ('1.2.3.1',4)
  12. INSERT INTO #temp VALUES ('1.2.3.1.1',5)
  13.  
  14. INSERT INTO #temp VALUES ('2',1)
  15. INSERT INTO #temp VALUES ('2.1',2)
  16. INSERT INTO #temp VALUES ('2.2',2)
  17. INSERT INTO #temp VALUES ('2.2.1',3)
  18.  
  19.  
  20. SELECT
  21. CASE WHEN
  22. new_nivel-2<0 THEN codigo ELSE
  23. SUBSTRING(codigo,1,new_nivel-2) END AS padre,codigo,nivel FROM(
  24. SELECT
  25. nivel + nivel-1 AS new_nivel,
  26. codigo,nivel FROM #temp
  27. ) t1
  28.  
  29.  
  30. REsultado:
  31.  
  32. padre   codigo  nivel
  33. 1   1   1
  34. 1   1.1 2
  35. 1   1.2 2
  36. 1.2 1.2.3   3
  37. 2   2   1
  38. 2   2.1 2
  39. 1.2.3   1.2.3.1 4
  40. 1.2.3.1 1.2.3.1.1   5
  41. 2   2.2 2
  42. 2.2 2.2.1   3
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 30/08/2012, 13:50
 
Fecha de Ingreso: septiembre-2006
Mensajes: 10
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: problema hijo padres sqlserver

ajja, el credito es para ti, obvio...
la plata para mi jaja

muchas gracias me funciono a la perfeccion.
  #4 (permalink)  
Antiguo 30/08/2012, 14:32
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: problema hijo padres sqlserver

Cita:
Iniciado por monoporfiado Ver Mensaje
ajja, el credito es para ti, obvio...
la plata para mi jaja

muchas gracias me funciono a la perfeccion.
plata para ti conocimiento y reconocimiento para mi :)

jejejeje
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Última edición por Libras; 30/08/2012 a las 14:44

Etiquetas: hijo, padres, select, server, sql, tabla
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 11:07.