Consulta SQL

r0xyN

Buenas tengo una duda con una consulta SQL : Dispongo de estas tablas

Lanzamiento (cod_partido(pk),cod_suceso(pk),puntos) ENTIDAD
efectua(cod_partido(pk),cod_suceso(pk),cod_jugador(fk)) RELACION
jugador(cod_jugador(pk),nacionalidad,edad,etc..) ENTIDAD

la cardinalidad es de N:1

necesito devolver para cada jugador el numero de puntos que ha efectuado

Se que tengo que hacer varios left join, pero no consigo dar con la tecla, alguien me podria dar la solucion?

ArcheR

Ahí faltarían tablas, no? (Una de sucesos, porque veo que le pones un código). Quieres sacar simplemente los puntos totales de cada jugador?

Si lo que quieres es eso último, te lo pongo como yo creo que es (porque no tengo clara todavía las tablas que has puesto xD). Te lo pongo relacionando con WHERE en lugar de con INNER JOIN porque aquí no tengo el SQL Server, y con Access los INNER JOIN anidados son una basura:

SELECT Jugador.Nombre, SUM(puntos) as [Total puntos]
FROM Jugador, Lanzamiento, Efectua
WHERE Jugador.cod_jugador = Efectua.cod_jugador
AND Lanzamiento.cod_partido = Efectua.cod_partido
AND Lanzamiento.cod_suceso = Efectua.cod_suceso
GROUP BY Jugador.Nombre, Jugador.cod_jugador

r0xyN

Aham eso sería con un producto cartesiano, pero se podria hacer con left join?

ArcheR

No entiendo para qué usar LEFT JOIN. Usa INNER JOIN normal y corriente.

r0xyN

ok de acuerdo

ArcheR

Bueno, vamos a ver, poder, puedes usar LEFT JOIN, pero hasta donde yo sé, está más enfocado a cuando quieres sacar registros de una tabla que no tienen su correspondiente registro en la otra. En este caso, por ejemplo, sacar jugadores que no tengan ningún lanzamiento registrado, en ese caso sí tendría sentido usar LEFT JOIN, porque el INNER JOIN no te saca esos registros.

r0xyN

aham ahora comprendo muchas gracias Archer. Si me surge alguna otra duda, te la comento ok?

Usuarios habituales

  • r0xyN
  • ArcheR