SQL - sentencia sql

   
Vista:

sentencia sql

Publicado por pablo ovando mora (4 intervenciones) el 19/09/2008 17:39:42
que tal a todos, es la primera vez que uso un foro para preguntar. y es que la verdad ya no se por donde.
este es el problema

tengo una base de datos, donde tengo las siguientes tablas

___Tbl_Cuestionario (id_cuestionario,nombre_cuestionario)
|
|_____Tbl_Secciones (id_cuestionario,id_seccion,nombre_seccion)
|
|_______Tbl_Temas (id_seccion,id_temas,nombre_tema)
|
|_______Tbl_sub_temas (id_temas,id_sub_tema,_nombre_subtema)
|
|________Tbl_preguntas (id_su_tema,id_pregunta,nombre_pregunta)
|
|________Tbl_respuestas (id_pregunta,id_respuesta,nombre_respuesta)

cuando necesito mostrar los datos de un cuestionario. me repite, el nombre_cuestionario,nombre_seccion, etc,etc y esto se debe a que son diferentes respuestas,

me muestra lo siguiente:

Diagnóstico de Manufactura-Servicio (cuestionario)
Administración (seccion)
Planeación (tema)
Objetivos y Metas (subtema)
¿Cómo se establecen los objetivos y las metas de la empresa? (pregunta)
En base a la competencia. (respuesta1)
Diagnóstico de Manufactura-Servicio (cuestionario)
Administración (Seccion)
Planeación (tema)
Objetivos y Metas (subtema)
¿Cómo se establecen los objetivos y las metas de la empresa? (pregunta)
En base a la experiencia y ventas. (respuesta2)

no hay alguna forma en que solo se muestre el nombre del cuestionario 1 sola vez, el nombre, de sa seccion 1 sola vez, etc etc algo como esto

Diagnóstico de Manufactura-Servicio (cuestionario)
Administración (seccion)
Planeación (tema)
Objetivos y Metas (subtema)
¿Cómo se establecen los objetivos y las metas de la empresa? (pregunta)
En base a la competencia. (respuesta1)
En base a la experiencia y ventas. (respuesta2)

este es el query

y gracias por tu tiempo

SELECT Tbl_Cuestionario.id_cuestionario, Tbl_Cuestionario.nombre_cuestionario, Tbl_Seccion.id_seccion, Tbl_Seccion.nombre_seccion, Tbl_Tema.id_tema,
Tbl_Tema.nombre_tema, Tbl_SubTema.id_sub_tema, Tbl_SubTema.nombre_sub_tema, Tbl_Preguntas.id_pregunta, Tbl_Preguntas.pregunta,
Tbl_Respuestas.id_respuestas, Tbl_Respuestas.respuesta
FROM Tbl_SubTema INNER JOIN
Tbl_Respuestas INNER JOIN
Tbl_Preguntas ON Tbl_Respuestas.id_pregunta = Tbl_Preguntas.id_pregunta ON Tbl_SubTema.id_sub_tema = Tbl_Preguntas.id_sub_tema INNER JOIN
Tbl_Tema ON Tbl_SubTema.id_tema = Tbl_Tema.id_tema INNER JOIN
Tbl_Seccion INNER JOIN
Tbl_Cuestionario ON Tbl_Seccion.id_cuestionario = Tbl_Cuestionario.id_cuestionario ON Tbl_Tema.id_seccion = Tbl_Seccion.id_seccion
WHERE (Tbl_Cuestionario.id_cuestionario = 82)

espero que alguno de ustedes me pueda ayudar a solucionar esto, que lleva un tiempo con dolor de cabeza, gracias por su tiempo espero su respuesta
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:sentencia sql

Publicado por edu (36 intervenciones) el 19/09/2008 19:38:14
Hasta cuantas respuestas pueden ser?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:sentencia sql

Publicado por edu (36 intervenciones) el 19/09/2008 19:49:41
Suponiendo que tienes hasta 3 respuestas, y teniendo en cuenta que no entiendo muy bien tus INNER JOINS me parece que lo estás haciendo en desorden, pero bueno, prueba con esto. He agregado 3 alias apuntando a la misma tabla RESPUESTAS haciedo match con la tabla preguntas en la parte final.

SELECT Tbl_Cuestionario.nombre_cuestionario, Tbl_Seccion.nombre_seccion, Tbl_Tema.nombre_tema, Tbl_SubTema.nombre_sub_tema, Tbl_Preguntas.pregunta, R1.respuesta, R2.respuesta, R3.respuesta

FROM Tbl_SubTema INNER JOIN
Tbl_Respuestas R1 INNER JOIN
Tbl_Preguntas ON R1.id_pregunta = Tbl_Preguntas.id_pregunta ON Tbl_SubTema.id_sub_tema = Tbl_Preguntas.id_sub_tema INNER JOIN
Tbl_Tema ON Tbl_SubTema.id_tema = Tbl_Tema.id_tema INNER JOIN
Tbl_Seccion INNER JOIN
Tbl_Cuestionario ON Tbl_Seccion.id_cuestionario = Tbl_Cuestionario.id_cuestionario ON Tbl_Tema.id_seccion = Tbl_Seccion.id_seccion
INNER JOIN Tbl_Respuestas R2 ON R2.id_pregunta = Tbl_Preguntas.id_pregunta
INNER JOIN Tbl_Respuestas R3 ON R3.id_pregunta = Tbl_Preguntas.id_pregunta
WHERE (Tbl_Cuestionario.id_cuestionario = 82)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar