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

Seleccionar varios campos iguales relacionados con otra tabla

Estas en el tema de Seleccionar varios campos iguales relacionados con otra tabla en el foro de SQL Server en Foros del Web. Hola! Perdon si el titulo no es muy descriptivo pero no se como explicarlo muy bien, creo q lo entenderan mejor al explicar el problema ...
  #1 (permalink)  
Antiguo 13/04/2011, 09:37
 
Fecha de Ingreso: abril-2011
Mensajes: 3
Antigüedad: 12 años, 11 meses
Puntos: 0
Seleccionar varios campos iguales relacionados con otra tabla

Hola!

Perdon si el titulo no es muy descriptivo pero no se como explicarlo muy bien, creo q lo entenderan mejor al explicar el problema

Tengo una base de datos para manejar la informacion de los aspirantes que aplican a realizar un examen de admision a una universidad.

Existe una tabla tblAspirante donde estan los datos generales de cada uno, la clave primaria es el numero de identidad. Luego existe una tabla llamada tblRegistro donde al aspirante se le asigna un numero de solicitud al momento q se inscribe para realizar el examen y otros campos referentes al examen como puntaje obtenido, etc.; tblRegistro esta relacionada con tblAspirante por medio del numero de identidad ya que un aspirante puede realizar mas de 1 vez el examen. Aqui no tengo problema alguno.

Ahora el asunto viene aqui, existe una tabla llamada tblCarrera con datos sobre las carreras q ofrece la universidad. Esta esta relacionada con tblRegistro ya que al momento de inscribirse, los aspirantes deben seleccionar 3 opciones de carreras q desearian estudiar y una vez hecho el examen de admision se le asignara la carrera segun el puntaje q obtuvieron.

En resumen en tblRegistro tengo 3 campos: codigoCarrera1, codigoCarrera2, codigoCarrera3 que hacen la relacion con tblCarrera.

Ahora mi problema surge al querer mostrar la informacion de registro de cada aspirante, porque no he encontrado la forma de mostrar los nombres de las 3 carreras (porq mostrar el codigo no tienen ningun sentido, no se pondran a aprenderse todos los codigos de las carreras). He probado y probado y no encuentro forma de hacerlo...

Seria algo asi:

|--Nombre--|--Carrera1--|--Carrera2--|--Carrera3--|

He probado esto
Cita:
SELECT
tblRegistro.codCarrera1, tblCarrera.nombreCarrera
FROM
tblRegistro, tblCarrera WHERE tblRegistro.codCarrera1=tblCarrera.codCarrera
UNION ALL
(SELECT tblRegistro.codCarrera2, tblCarrera.nombreCarrera
FROM tblRegistro, tblCarrera WHERE tblRegistro.codCarrera2=tblCarrera.codCarrera)
UNION ALL
(SELECT tblRegistro.codCarrera3, tblCarrera.nombreCarrera
FROM tblRegistro, tblCarrera WHERE tblRegistro.codCarrera3=tblCarrera.codCarrera)
pero lo q hace es mostrarme los datos asi:

Aspirante1 -- Carrera1
Aspirante2 -- Carrera1
Aspirante1 -- Carrera2
...

Y pues necesito que esten en las misma fila las 3 carreras de cada aspirante.

Saludos y gracias por leer el testamento jejeje
  #2 (permalink)  
Antiguo 13/04/2011, 09:55
Avatar de arepavieja  
Fecha de Ingreso: marzo-2011
Mensajes: 207
Antigüedad: 13 años
Puntos: 9
Respuesta: Seleccionar varios campos iguales relacionados con otra tabla

No sé si sea la manera correcta, pero una vez solucioné un problema similar haciendo doble consulta, la primera para seleccionar a todos los estudiantes, y la segunda para seleccionar las columnas correspondientes al estudiante y mostrandola en columnas repetidas.
por ejemplo:

mediante la consulta selecciono a todos los estudiantes y obtengo el id de cada uno verdad.
luego en un ciclo que se repita hasta N cantidad de registros obtenidos de la primera consulta hago otra consulta donde me busque todos los registros del primer ciclo, es decir, el primer registro fue arepavieja con ID i, entonces me busque todos los registros que coincidan con ID 1 y que el ciclo se repita.

entonces obtengo la lista de registros de materias de cada estudiantes y lo muestro en una tabla de manera ordenada... no sé si logro explicarme.
__________________
La educación y la cortesía abren todas las puertas.
  #3 (permalink)  
Antiguo 13/04/2011, 11:48
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 8 meses
Puntos: 180
Respuesta: Seleccionar varios campos iguales relacionados con otra tabla

Alguna vez tratamo este tema por aca, si no mal recuerdo se llama REGISTROS A COLUMNAS.
__________________
MCTS Isaias Islas
  #4 (permalink)  
Antiguo 13/04/2011, 11:50
 
Fecha de Ingreso: abril-2011
Mensajes: 3
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: Seleccionar varios campos iguales relacionados con otra tabla

Gracias a ambos!!

Voy a buscar ese tema.
  #5 (permalink)  
Antiguo 13/04/2011, 11:51
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 8 meses
Puntos: 180
Respuesta: Seleccionar varios campos iguales relacionados con otra tabla

Si no lo encuentras, me dices y he visto alguna vez la solucion en SAN GOOGLE (Registros a columnas)
__________________
MCTS Isaias Islas
  #6 (permalink)  
Antiguo 13/04/2011, 13:44
 
Fecha de Ingreso: abril-2011
Mensajes: 3
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: Seleccionar varios campos iguales relacionados con otra tabla

Muchisimassssss gracias a ambos!!! Este fue un quebradero de cabeza horrible... pero con las pistas q me dieron ya lo resolvi.

Busque en Google (creo q deberian de hacerle un altar o algo jejeje) lo de Registros a columnas y encontre algunso lugares de donde saque la solucion.

La dejo aqui por si a alguien le sirve

Código SQL:
Ver original
  1. SELECT registro.numeroSolicitud , tblAspirante.identidad, tblAspirante.primerNombre, tblAspirante.segundoNombre, tblAspirante.primerApellido, tblAspirante.segundoApellido,
  2. carrera1 = ISNULL((SELECT tblCarrera.nombreCarrera FROM tblCarrera, tblRegistro WHERE tblCarrera.codCarrera=tblRegistro.codCarrera1 AND tblRegistro.numeroSolicitud=registro.numeroSolicitud), 0),
  3. carrera2 = ISNULL((SELECT tblCarrera.nombreCarrera FROM tblCarrera, tblRegistro WHERE tblCarrera.codCarrera=tblRegistro.codCarrera2 AND tblRegistro.numeroSolicitud=registro.numeroSolicitud),0),
  4. carrera3 = ISNULL((SELECT tblCarrera.nombreCarrera FROM tblCarrera, tblRegistro WHERE tblCarrera.codCarrera=tblRegistro.codCarrera3 AND tblRegistro.numeroSolicitud=registro.numeroSolicitud),0) FROM tblRegistro AS registro INNER JOIN tblAspirante ON tblAspirante.identidad=registro.identidad ORDER BY registro.numeroSolicitud

Gracias por la rapida ayuda!!
  #7 (permalink)  
Antiguo 13/04/2011, 15:46
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 8 meses
Puntos: 180
Respuesta: Seleccionar varios campos iguales relacionados con otra tabla

Exactamente esa es la solucion, misma que fue recomendada por este foro a la misma pregunta que tu habias hecho.

Felicidades por el esfuerzo....
__________________
MCTS Isaias Islas

Etiquetas: campos, iguales, relacionados, seleccionar, tablas
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 01:54.