Duda consulta SQL

11/12/2003 - 16:19 por Juan Carlos Villalobos | Informe spam
Saludos, me encuentro con una tabla con cierto diseño y quisiera saber si es
posible realizar una sola consulta sql que me arroje los resultados
requeridos. Para facilitar coloco un ejemplo que asemeja la estructura de la
tabla.

Campos de la tabla:
ID, Nombre, IDPadre (El campo IDPadre hace referencia a un registro dentro
de la misma tabla.)

Registros ejemplo:
1,Pedro,0
2,Juan,0
3,Maria,0
4,Luis,1
5,Carlos,2
6,Alberto,1

Se puede estructurar una consulta que me arroje el sgte resultado ?
4,Luis,Pedro
5,Carlos,Juan
6,Alberto,Pedro

Muchas gracias de antemano

Cordial saludo
Juan Carlos

Si te caes siete veces, levántate ocho
"Proverbio chino"

Preguntas similare

Leer las respuestas

#1 Maximiliano Damian Accotto
11/12/2003 - 16:23 | Informe spam
si como no

podrias usar join ej

Select t1.id,t1.nombre,t2.nombre from tabla t1 inner join tabla t2 on
t1.id = t2.padre_id

algo asi deberia ser

suerte.

pd: no lo probe porque no tengo aca SQL :D


Maximiliano Damian Accotto
"Juan Carlos Villalobos" escribió en el mensaje
news:%233igEp$
Mostrar la cita
es
Mostrar la cita
la
Mostrar la cita
#2 ulises
11/12/2003 - 16:37 | Informe spam
Prueba con

CREATE TABLE prueba ( id int, nombre char(10), idpadre
int )
go
INSERT INTO prueba VALUES ( 1,'Pedro',0)
INSERT INTO prueba VALUES ( 2,'Juan',0)
INSERT INTO prueba VALUES ( 3,'Maria',0)
INSERT INTO prueba VALUES ( 4,'Luis',1)
INSERT INTO prueba VALUES ( 5,'Carlos',2)
INSERT INTO prueba VALUES ( 6,'Alberto',1)
go
SELECT a.id, a.nombre, b.nombre
FROM prueba a LEFT JOIN prueba b
ON ( a.idpadre = b.id )
WHERE a.idpadre > 0
go

te dara como resultado lo que pides

id nombre nombre
4 Luis Pedro
5 Carlos Juan
6 Alberto Pedro

(3 row(s) affected)

Saludos,
Ulises

Mostrar la cita
quisiera saber si es
Mostrar la cita
resultados
Mostrar la cita
la estructura de la
Mostrar la cita
un registro dentro
Mostrar la cita
resultado ?
Mostrar la cita
#3 Juan Carlos Villalobos
11/12/2003 - 16:44 | Informe spam
Hola Maximiliano, probe y funcionó de maravilla, lo unico fue invertir el
t1.id = t2.padre_id por t1.padre_id = t2.id
y listo.
Muchas gracias, ha sido una valiosisima ayuda.

Un cordial saludo
Juan Carlos

Si te caes siete veces, levántate ocho
"Proverbio chino"


"Maximiliano Damian Accotto" escribió
en el mensaje news:%23aE6mr$
Mostrar la cita
#4 Maximiliano Damian Accotto
11/12/2003 - 16:49 | Informe spam
correcto!! me alegro que te haya sido de utilidad!!

un saludo y espero volver a verte por estos pagos :D

Maximiliano Damian Accotto
"Juan Carlos Villalobos" escribió en el mensaje
news:e$f5V3$
Mostrar la cita
#5 Juan Carlos Villalobos
11/12/2003 - 17:13 | Informe spam
Ulises tambien muchas gracias por tu tiempo y esfuerzo. Maximiliano mostró
la forma de hacerlo con inner join, pero veo segun tu ejemplo la forna de
como hacerlo tambien con el left join. No se creia que pudiera atacarse
tambien con el left join. He aprendido bastante de los dos.

Nuevamente gracias Ulises y un cordial saludo

Juan Carlos

Si te caes siete veces, levántate ocho
"Proverbio chino"

"ulises" escribió en el mensaje
news:085c01c3bffc$b11a4ae0$
Prueba con

CREATE TABLE prueba ( id int, nombre char(10), idpadre
int )
go
INSERT INTO prueba VALUES ( 1,'Pedro',0)
INSERT INTO prueba VALUES ( 2,'Juan',0)
INSERT INTO prueba VALUES ( 3,'Maria',0)
INSERT INTO prueba VALUES ( 4,'Luis',1)
INSERT INTO prueba VALUES ( 5,'Carlos',2)
INSERT INTO prueba VALUES ( 6,'Alberto',1)
go
SELECT a.id, a.nombre, b.nombre
FROM prueba a LEFT JOIN prueba b
ON ( a.idpadre = b.id )
WHERE a.idpadre > 0
go

te dara como resultado lo que pides

id nombre nombre
4 Luis Pedro
5 Carlos Juan
6 Alberto Pedro

(3 row(s) affected)

Saludos,
Ulises
Ads by Google
Search Busqueda sugerida