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

Ayuda con consulta (creeria sencilla)

Estas en el tema de Ayuda con consulta (creeria sencilla) en el foro de SQL Server en Foros del Web. Hola a todos, espero que alguien me de una mano con una consulta, pero la verdad no se si estoy planteando bién una tabla, les ...
  #1 (permalink)  
Antiguo 06/05/2010, 03:59
 
Fecha de Ingreso: junio-2009
Mensajes: 19
Antigüedad: 15 años, 4 meses
Puntos: 0
Pregunta Ayuda con consulta (creeria sencilla)

Hola a todos, espero que alguien me de una mano con una consulta, pero la verdad no se si estoy planteando bién una tabla, les paso a explicar

Supongamos tengo dos tablas:
1) Profesor (id_profesor, nombre)
2) Examen (id_examen, fecha, materia, profesor1, profesor2, profesor3)

En el examen tiene que haber 3 profesores a los cuales los relaciono a cada uno contra el id_profesor, en el profesor 1, 2 y 3 estaria guardando los id_profesor
Con datos seria algo asi:
-------------- Tabla Profesor----------
id_profesor Nombre
1 Tito
3 Pepe
5 Juan
-------------------------------------------
tabla examen
id_examen .....etc profesor1 profesor2 profesor3
--------1 ------------------- 1 ---------------- 5 -----------3

¿Está bién hacerlo de ese modo?

Si esta bién el planteo como hago la consulta para que me traiga los profesores 1, 2, 3 pero con sus respectivos nombres

Con un solo campo lo haria algo asi:

select profesor.nombre
from profesor inner join examen
on examen.profesor1 = profesor.id_profesor

Pero no estoy logrando traer los nombres de los 3 campos.
Bueno Gracias desde ya y espero que alguien me oriente un poco.
Saludos!
  #2 (permalink)  
Antiguo 06/05/2010, 09:37
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: Ayuda con consulta (creeria sencilla)

Si RIGUROSAMENTE son TRES y solo TRES profesores, entonces, guarda el nombre en tu tabla de Examen y ya no consultes la lista de profesores.
  #3 (permalink)  
Antiguo 06/05/2010, 11:43
 
Fecha de Ingreso: junio-2009
Mensajes: 19
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Ayuda con consulta (creeria sencilla)

Muchas Gracias por tu respuesta iislas.
Lo voy hacer de de ese modo (Lo habia pensado como una opción).

Igualmente si alguién sabe como hacer esa consulta, agradeceria que me la explicara.

Saludos y muchas gracias nuevamente iislas.
  #4 (permalink)  
Antiguo 06/05/2010, 12:30
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: Ayuda con consulta (creeria sencilla)

Dime si funciona, no lo he probado

SELECT p1.nombre, p2.nombre, p3.nombre
from profesor p1 join examen e on e.profesor1 = p1.profesor
join profesor p2 on e.profesor2 = p2.profesor
join profesor p3 on e.profesor3 = p3.profesor
  #5 (permalink)  
Antiguo 08/05/2010, 03:00
 
Fecha de Ingreso: junio-2009
Mensajes: 19
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Ayuda con consulta (creeria sencilla)

iislas Muchas gracias por tus respuesta, la consulta que me pasaste no funciona igual no te procupes, por ahora voy a guardar solamente los nombres.
  #6 (permalink)  
Antiguo 12/05/2010, 14:17
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 19 años, 3 meses
Puntos: 39
Respuesta: Ayuda con consulta (creeria sencilla)

Prueba asi:
Código SQL:
Ver original
  1. SELECT p1.nombre, p2.nombre, p3.nombre
  2. FROM examen e
  3. LEFT JOIN profesor p1 ON e.profesor1 = p1.profesor
  4. LEFT JOIN profesor p2 ON e.profesor2 = p2.profesor
  5. LEFT JOIN profesor p3 ON e.profesor3 = p3.profesor
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.

Etiquetas: sencilla
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 02:46.