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

Problema consulta con join

Estas en el tema de Problema consulta con join en el foro de SQL Server en Foros del Web. Saludos a todos los del foro. Estoy haciendo una consulta en el SQL Server 2005 con join para relacionar campos de dos tablas pero no ...
  #1 (permalink)  
Antiguo 24/05/2008, 12:20
 
Fecha de Ingreso: febrero-2008
Mensajes: 33
Antigüedad: 16 años, 2 meses
Puntos: 0
Problema consulta con join

Saludos a todos los del foro.
Estoy haciendo una consulta en el SQL Server 2005 con join para relacionar campos de dos tablas pero no me ha dado el resultado que yo quiero, y es porque estoy realizando mal la consulta. Mis tablas son las siguientes:

Tabla materiasI

no_control (campo llave)
matematicas
fisica
quimica

Tabla materiaII

no_control (campo llave)
programacion
ensamblador
matematicas II

La consulta que estoy haciendo es la siguiente:

select * from materiasI join materiasII on materiasI.no_control=materiasII.no_control where materiasI.no_control='S3380013'

Y me arroja como resultado todos los campos de las tablas materiasI y II que se relacionen con el no_control S3380013 pero me esta repitiendo dos veces el campo no_control.

Ejemplo:

no_control
matematicas
quimica
fisica
no_control
programacion
ensamblador
matematicas II

Como puedo hacer que solo me muestre un solo no_control como resultado.

Ejemplo:

no_control
matematicas
quimica
fisica
programacion
ensamblador
matematicas II

Es obvio que estoy haciendo la consulta mal, o a lo mejor esta mal el diseño de mis tablas.
Agredezco su ayuda en esto.
Gracias.
  #2 (permalink)  
Antiguo 24/05/2008, 15:41
 
Fecha de Ingreso: abril-2008
Mensajes: 9
Antigüedad: 16 años
Puntos: 0
Respuesta: Problema consulta con join

puedes usar "distinct"
select distinct * from materiasI ...
  #3 (permalink)  
Antiguo 24/05/2008, 17:59
 
Fecha de Ingreso: agosto-2007
Mensajes: 268
Antigüedad: 16 años, 8 meses
Puntos: 2
Respuesta: Problema consulta con join

Puedes usar un GROUP BY no_control
  #4 (permalink)  
Antiguo 25/05/2008, 10:41
 
Fecha de Ingreso: febrero-2008
Mensajes: 33
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Problema consulta con join

Gracias por las respuestas, pero sigo sin poder echar a andar la consulta.
Creo que no me explique bien, lo que me esta repitiendo en la consulta es la columna no_control con su respectivo registro.

Lo que yo tengo entendido es que el Distinct se usa para no permitir registros duplicados, pero lo que yo tengo duplicado en la consulta es una columna, la cual es la del no_control.

Ejemplo:

no_control quimica no_control

S3380013 8 S3380013


donde 'S3380013' es el numero de control y 8 es la calificacion de la materia de quimica

Y el resultado que quiero obtener es este:

no_control quimica
S3380013 8

En MySQL ya habia resulto esto con el siguiente query:

SELECT * FROM materiasI JOIN materiasII USING (no_control) WHERE no_control='S3380013'

Pero en SQL Server no funciona de esa forma, por lo que tengo entendido.
Espero haber explicado. De igual manera seguiremos intentandolo y gracias por las respuestas.
  #5 (permalink)  
Antiguo 26/05/2008, 15:31
 
Fecha de Ingreso: marzo-2008
Mensajes: 3
Antigüedad: 16 años, 1 mes
Puntos: 0
De acuerdo Respuesta: Problema consulta con join

Podria quedar así:

select materiasI.no_control,matematicas,fisica,quimica,pr ogramación,ensamblador,matematicasII from materiasI join materiasII on materiasI.no_control=materiasII.no_control where materiasI.no_control='S3380013'
Espero te sirva!!
  #6 (permalink)  
Antiguo 27/05/2008, 10:27
 
Fecha de Ingreso: febrero-2008
Mensajes: 33
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Problema consulta con join

Saludos.
Gracias Elias_Enki, funciona la consulta perfectamente.

Otra pregunta. Lo que pasa es que tengo 8 tablas de materias: materias I, II, III ... hasta materias VIII, las cuales tienen columnas con el nombre de alguna materia en especifico. Cada tabla tiene una columna llamada no_control, la cual contiene el numero de control de algun alumno y esta registrado en todas las tablas de materias.

Ejemplo: el alumno con numero de control 'S3380013' tiene un registro en cada tabla de la Base de datos, esto es porque a veces un alumno esta cursando materias de diferentes semestres o grados.

Entonces lo que yo intente hacer es jalar todas las materias de todas las tablas, pero al hacer esto obtengo repetido la columna no_control que esta en cada tabla de las materias. No se si se podria hacer esto, ejemplo:

select * materias I join materias II on materias I.no_control=materias II.no_control join materias III on materias I.no_control=materias III.no_control ...... where materias I.no_control='S3380013'

pero dejando solo una columna no_control, ya que al seleccionar todo se vienen todas las columnas no_control de las demas tablas, esto en lugar de seleccionar solo algunas materias.

Espero haberme explicado
Gracias.
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 16:16.