none
Acceder dos veces a un primary key en otra tabla RRS feed

  • Pregunta

  • Buenas, tengo una duda respecto a unas consultas en SQL Server.

    Se me pide mostrar una tabla de entrenadores la cual tiene dos certificados, y de cada certificado sus datos, sin embargo los datos de ambos certificados estan en la misma tabla, y cuando quiero hacerlo mediante un Inner Join, la salida solo muestra los datos de un certificado

    select * from T_Entrenadores 
    inner join  T_Certificados ON T_Entrenadores.Certificado1 = T_Certificados.Titulo_certificado
    and T_Entrenadores.Certificado2 = T_Certificados.Titulo_certificado

    esta es la instruccion con la que intente hacer eso, espero sirva de ejemplo para lo que intento hacer

    martes, 23 de marzo de 2021 7:29

Todas las respuestas

  • Hola J_140301:

    select * from T_Entrenadores 
    LEFT join  T_Certificados c1 ON T_Entrenadores.Certificado1 = c1.Titulo_certificado
    LEFT JOIN  T_Certificados c2 on T_Entrenadores.Certificado2 = c2.Titulo_certificado

    A priori parece una consulta sobre la misma tabla.

    Prueba la query que te muestro y comentas.

    Te he cambiado el inner join por left join, por si no tuviese los dos certificados.

    Para mostrar las columnas tan solo tienes que acceder a sus tablas por el alias (c1 o c2)

    martes, 23 de marzo de 2021 8:29
  • esta es la instruccion con la que intente hacer eso

    Con esa instrucción que has escrito, estás buscando un registro de la tabla de entrenadores en el que los dos campos de certificados sean iguales entre sí y coincidan con un único registro de la tabla de certificados.

    Para buscar los dos campos en dos registros de la otra tabla, hay que unir la tabla dos veces. Y para poderla unir dos veces, hay que poner dos alias distintos en cada una de las dos veces que se une. Estos dos alias son los c1 y c2 que te ha escrito Javi en su respuesta.

    martes, 23 de marzo de 2021 13:08
  • Lo acabo de probar y sirvió bastante bien, muchas gracias por la solución me fue de ayuda :D 
    martes, 23 de marzo de 2021 23:39