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

Consulta recursiva ULTRA KILL

Estas en el tema de Consulta recursiva ULTRA KILL en el foro de Mysql en Foros del Web. Hola amigos me remito a ustedes para solicitar ayuda en una consulta pervertida que me tiene medio loco xD, el problema es el siguiente. Tengo ...
  #1 (permalink)  
Antiguo 16/07/2012, 13:31
 
Fecha de Ingreso: julio-2012
Mensajes: 3
Antigüedad: 12 años, 4 meses
Puntos: 0
Consulta recursiva ULTRA KILL

Hola amigos me remito a ustedes para solicitar ayuda en una consulta pervertida que me tiene medio loco xD, el problema es el siguiente.

Tengo una tabla llamada preguntas con la siguiente estructura:

tabla->preguntas
campos->idpregunta,idproblema,descripcion,si,no

en la tabla tengo registros como los siguientes


idpregunta | idproblema | descripcion | si | no |
1 1 A 2 0
2 1 B 3 0
3 1 C 2 0

Donde el campo (si) de la tabla pregunta es el idpregunta de otro registro en la misma tabla

La pregunta del año es la siguiente:
Como hago para obtener la siguiente salida

1 - 1 - A - B
2 - 1 - B - C
3 - 1 - C - B

Es decir que el campo si es la descripcion de otro registro en la misma tabla
  #2 (permalink)  
Antiguo 16/07/2012, 14:01
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: Consulta recursiva ULTRA KILL

La solución es invocar dos veces a la misma tabla, usando alias para evitar las confusiones.
Código MySQL:
Ver original
  1.     P1.idpregunta,
  2.     P1.idproblema,
  3.     P1.descripcion,
  4.     P2.si,
  5.     P1.no
  6. FROM preguntas P1 INNER JOIN preguntas P2 ON P1.si = P2.idpregunta
Lo que no me queda claro es si lo que muestra esa relación es la respuesta a la pregunta o qué otra cosa.
Normalmente, si una pregunta tiene más de una respuesta, por ejemplo, van en tablas separadas. Yo no le veo mucho sentido que una pregunta apunte a otra pregunta como respuesta...
__________________
¿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 16/07/2012, 14:50
 
Fecha de Ingreso: julio-2012
Mensajes: 3
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Consulta recursiva ULTRA KILL

Muchas gracias hermano te debo una :)
  #4 (permalink)  
Antiguo 16/07/2012, 14:56
 
Fecha de Ingreso: julio-2012
Mensajes: 3
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Consulta recursiva ULTRA KILL

Cita:
Iniciado por gnzsoloyo Ver Mensaje
La solución es invocar dos veces a la misma tabla, usando alias para evitar las confusiones.
Código MySQL:
Ver original
  1.     P1.idpregunta,
  2.     P1.idproblema,
  3.     P1.descripcion,
  4.     P2.si,
  5.     P1.no
  6. FROM preguntas P1 INNER JOIN preguntas P2 ON P1.si = P2.idpregunta
Lo que no me queda claro es si lo que muestra esa relación es la respuesta a la pregunta o qué otra cosa.
Normalmente, si una pregunta tiene más de una respuesta, por ejemplo, van en tablas separadas. Yo no le veo mucho sentido que una pregunta apunte a otra pregunta como respuesta...
hermano una pregunta apunta a otra pregunta para saber que secuencia debe seguir el programa que realizara las preguntas

por ejemplo

idpregunta=1 descripcion=¿su computadora tiene antivirus? si=2
idpregunta=2 descripcion=¿esta actualizado ----------------- ? si=3
idpregunta=3 descripcion=¿realizo un analisis completo ----? si=X
  #5 (permalink)  
Antiguo 16/07/2012, 15:06
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: Consulta recursiva ULTRA KILL

Ahhhh
Ahora se entiende mejor.
__________________
¿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: kill, recursiva, registros, tabla, ultra, campos
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 20:13.