Ir al contenido


Foto

amigos ayuda con consulta SQL SERVER


  • Por favor identifícate para responder
21 respuestas en este tema

#1 amell2020

amell2020

    Advanced Member

  • Miembros
  • PipPipPip
  • 340 mensajes
  • LocationEn un solo Lugar

Escrito 23 noviembre 2011 - 10:02

hola amigo, por favor ayudarme con esto: yo tengo dos tablas las cuales tienen relaciones en campos, ahora yo kiero visualizar los campos de la otra tablas 2 en la misma tabla 1

Por ejemplo:
Tabla1
Id_notas
n1
n2
n3
n4
Id_estudiantes FK

entonces Tabla 2 tiene:
id_estudiante
nombre
apellido

como ven hay una relación de tabla 1 Id_estudiante a Tabla 2 Id_estudiante,  como ven la tabla1 me guarda el ID de la tabla estudiante, yo quiero ahora mostrar en un consulta con otro formulario que en vez de mostrar el numero del Id También se muestre el nombre del estudiante.
espero que me entiendas

  • 0

#2 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 23 noviembre 2011 - 10:08

Para eso podemos utilizar un join entre las tablas amigo, algo asi:  (y)

select tabla1.*, tabla2.nombre, tabla2.apellido
from
    tabla1
        inner join tabla2 on tabla2.id_estudiante = tabla1.id_estudiante



Lo que hace la consulta es unir las dos tablas a través de la llave foránea id_estudiante, si mostramos el resultado de la consulta en un dbgrid te mostrará la información seleccionada de ambas tablas...

Saludox !  :)
  • 0

#3 amell2020

amell2020

    Advanced Member

  • Miembros
  • PipPipPip
  • 340 mensajes
  • LocationEn un solo Lugar

Escrito 23 noviembre 2011 - 10:18

okay para ver si me explica mejor te dare los nombre de mi tablas:

Tabla nota
id_notas
matricula FK (Id_matricula
n1
n2
n3
n4
promedio


matricula:
id_matricula PK
estudiantes
profesor
curso
fecha


lo que me interesa es que en el formulario de notas yo pueda ver los nombre del estudiantes, profesor, curso, ya que tengo una relacion id_matricula.

  • 0

#4 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 23 noviembre 2011 - 11:04

Hola


SELECT
    N.*,
    M.estudiantes,
    M.profesor,
    M.curso

FROM  notas N
INNER JOIN matricula M ON M.id_matricula = N.matricula


Salud OS
  • 0

#5 amell2020

amell2020

    Advanced Member

  • Miembros
  • PipPipPip
  • 340 mensajes
  • LocationEn un solo Lugar

Escrito 23 noviembre 2011 - 11:24

amigos me da error de conexion del adoquery con el codigo que me pasaste
  • 0

#6 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 23 noviembre 2011 - 11:32

amigos me da error de conexion del adoquery con el codigo que me pasaste


Checa que los nombres de las tablas y de los campos sean los correctos, esa es una sentencia SQL básica que no debería de fallar.

SaludOS
  • 0

#7 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.484 mensajes
  • LocationMallorca

Escrito 24 noviembre 2011 - 03:06

Hola.

amigos me da error de conexion del adoquery con el codigo que me pasaste


Cuando, ¿ al abrir la consulta, al modificar datos, ... ?.

¿ Cual es el mensaje de error completo ?, ¿ seguro que no te da alguna pista de lo que está fallando ?.

Saludos.
  • 0

#8 amell2020

amell2020

    Advanced Member

  • Miembros
  • PipPipPip
  • 340 mensajes
  • LocationEn un solo Lugar

Escrito 24 noviembre 2011 - 08:11

error desde SQL SERVER:
Mens. 4104, Nivel 16, Estado 1, Línea 8
El identificador formado por varias partes "M.id_matricula" no se pudo enlazar.
Mens. 207, Nivel 16, Estado 1, Línea 8
El nombre de columna 'matricula' no es válido.
Mens. 4104, Nivel 16, Estado 1, Línea 3
El identificador formado por varias partes "M.estudiantes" no se pudo enlazar.
Mens. 4104, Nivel 16, Estado 1, Línea 4
El identificador formado por varias partes "M.profesor" no se pudo enlazar.
Mens. 4104, Nivel 16, Estado 1, Línea 5
El identificador formado por varias partes "M.curso" no se pudo enlazar.
  • 0

#9 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.484 mensajes
  • LocationMallorca

Escrito 24 noviembre 2011 - 08:22

Aquí tienes la explicación del error : http://www.microsoft...erver&LCID=1033

Utiliza otros alias (parece haber algún conflicto con los alias escogidos) :

SELECT 
    NO.*,
    MA.estudiantes,
    MA.profesor,
    MA.curso
FROM  notas AS NO
INNER JOIN matricula AS MA ON MA.id_matricula = NO.matricula

O simplemente, no uses ningún alias :

SELECT 
    notas.*,
    matricula.estudiantes,
    matricula.profesor,
    matricula.curso
FROM  notas
INNER JOIN matricula ON matricula.id_matricula = notas.matricula

Saludos.
  • 0

#10 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 24 noviembre 2011 - 08:31

Caramba!!! Que sensible me salió SQL Server :p :D :D :D

Salud OS
  • 0

#11 amell2020

amell2020

    Advanced Member

  • Miembros
  • PipPipPip
  • 340 mensajes
  • LocationEn un solo Lugar

Escrito 24 noviembre 2011 - 08:41

tengo el mismo mensaje de error al poner ese codigo aqui muestro las tablas y mi relacion para que vean mejor:

Archivos adjuntos


  • 0

#12 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 24 noviembre 2011 - 09:56

Por lo que veo no estamos usando los nombres de campo correctos, en tu primer ejemplo colocaste matricula.matricula y es matricula.id_matricula por otro lado supongo que quieres enlazar las tres tablas y no solo dos.


SELECT
    estudiante.nombre,
    estudiante.apellido,
    matricula.profesor,
    matricula.curso,
    notas.DP
    notas.CP

FROM estudiante
LEFT OUTER JOIN matricula ON matricula.id_estudiante = estudiante.id_estudiante
LEFT OUTER JOIN notas ON notas.id_matricula = matricula.id_matricula


Si eto no funciona no se que tengas mal en la construccion de tus tablas.

Salud OS
  • 0

#13 amell2020

amell2020

    Advanced Member

  • Miembros
  • PipPipPip
  • 340 mensajes
  • LocationEn un solo Lugar

Escrito 24 noviembre 2011 - 10:53

aqui esta correcto de esta forma:
SELECT
    estudiante.nombre,
    estudiante.apellido,
    matricula.id_profesor,
    matricula.id_curso,
    notas.DP,
    notas.CP,
    notas.AP,
    notas.MP

FROM estudiante
LEFT OUTER JOIN matricula ON matricula.id_estudiante = estudiante.id_estudiante
LEFT OUTER JOIN notas ON notas.id_matricula = matricula.id_matricula
  • 0

#14 amell2020

amell2020

    Advanced Member

  • Miembros
  • PipPipPip
  • 340 mensajes
  • LocationEn un solo Lugar

Escrito 24 noviembre 2011 - 11:01

pero tengo un pequeño inconveniente porque el profesor no aparece el nombre del profesor sale como campo null,
mira mostrare mi tablas con su relaciones porque lo quiero hacer un formulario de notas pero que parezcan el nombre del profesor y del estudiante y el curso desde el formulario notas: miren la imagen:

Archivos adjuntos


  • 0

#15 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 24 noviembre 2011 - 11:11

pero tengo un pequeño inconveniente porque el profesor no aparece el nombre del profesor sale como campo null,
mira mostrare mi tablas con su relaciones porque lo quiero hacer un formulario de notas pero que parezcan el nombre del profesor y del estudiante y el curso desde el formulario notas: miren la imagen:


Deberías de intentar modificar el query que ya se te dió, no estás usando la lógica ni el sentido común y francamente nos estás dando la información a cuenta gotas, en buen plan, a nadie le sirve más que a tí aprender a hacerlo.

Salud OS
  • 0

#16 amell2020

amell2020

    Advanced Member

  • Miembros
  • PipPipPip
  • 340 mensajes
  • LocationEn un solo Lugar

Escrito 25 noviembre 2011 - 04:37

ya modifique el codigo y listo, es como dices solo era logica que faltaba. pero ahora pregunto como puedo mostrar esa consulta con where de una de las tablas?
  • 0

#17 amell2020

amell2020

    Advanced Member

  • Miembros
  • PipPipPip
  • 340 mensajes
  • LocationEn un solo Lugar

Escrito 25 noviembre 2011 - 04:41

seria algo asi:
SELECT
    estudiante.nombre,
    estudiante.apellido,
    matricula.id_profesor,
    profesor.nombre As Profesor,
    matricula.id_curso,
    notas.DP,
    notas.CP,
    notas.AP,
    notas.MP

FROM estudiante
LEFT OUTER JOIN matricula ON matricula.id_estudiante = estudiante.id_estudiante
LEFT OUTER JOIN profesor ON profesor.id_profesor = matricula.id_profesor
LEFT OUTER JOIN notas ON notas.id_matricula = matricula.id_matricula
where profesor.id_profesor = profesor.id_profesor
  • 0

#18 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.484 mensajes
  • LocationMallorca

Escrito 25 noviembre 2011 - 04:57

seria algo asi:
SELECT
    estudiante.nombre,
    estudiante.apellido,
    matricula.id_profesor,
    profesor.nombre As Profesor,
    matricula.id_curso,
    notas.DP,
    notas.CP,
    notas.AP,
    notas.MP

FROM estudiante
LEFT OUTER JOIN matricula ON matricula.id_estudiante = estudiante.id_estudiante
LEFT OUTER JOIN profesor ON profesor.id_profesor = matricula.id_profesor
LEFT OUTER JOIN notas ON notas.id_matricula = matricula.id_matricula
where profesor.id_profesor = profesor.id_profesor


El sistema lo debería aceptar perfectamente. En el WHERE puedes añadir condiciones para cualquiera de las tablas enlazadas en la consulta.

Pero no va a hacer nada, dado que profesor.id_profesor siempre va a ser igual a profesor.id_profesor, puesto que es él mismo (es como poner un where 1 = 1, va a aceptar todos los registros).

Saludos.
  • 0

#19 amell2020

amell2020

    Advanced Member

  • Miembros
  • PipPipPip
  • 340 mensajes
  • LocationEn un solo Lugar

Escrito 25 noviembre 2011 - 05:45

Miren ya tengo mi tabla creada ahora necesito que al hacer click en grid me abra un formulario para ponerla notas, que son 4, y me gustaria saber, dejo una imagen para que vean a que me refiero:

Archivos adjuntos


  • 0

#20 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.484 mensajes
  • LocationMallorca

Escrito 26 noviembre 2011 - 07:15

Hola.

Miren ya tengo mi tabla creada ahora necesito que al hacer click en grid me abra un formulario para ponerla notas, que son 4, y me gustaria saber, dejo una imagen para que vean a que me refiero:


Deberías abrir un nuevo hilo con esta pregunta, ya que no tiene que ver con la pregunta original, que podemos dar por resuelta.

NOTA: Considera entrar las 4 notas directamente desde la Grid, en lugar de abrir una pantalla nueva.

Saludos.
  • 0




IP.Board spam blocked by CleanTalk.