1

Tengo una query en la que me piden

Cread una consulta que muestre para un atleta determinado las pruebas en las que ha participado. Para cada prueba se debe mostrar la fecha, la descripción de la competición, el resultado almacenado en ‘result’ de Score, así como el nombre del estadio (venue) en que se ha realizado la prueba. Mostrad la consulta SQL. Haced que esta filtre los datos para mostrar únicamente los datos del usuario que tiene por nick ‘eisaza’:

Tengo la query hecha pero no me aclaro como meter el valor del campo score.score en score.result.

El Modelo de datos es este introducir la descripción de la imagen aquí

Y mi query es esta;

select score.dateresult,competition.compdescription,score.score,venue.venue
from score,competition,venue,webclient,athlete
where athlete.idathlete = score.idathlete
and score.idcompetition = competition.idcompetition
and competition.idvenue = venue.idvenue
and athlete.idathlete = webclient.idwebclient
and webclient.nick ='eisaza';

Lo dicho,quiero meter en el campo result de score el score de score

Un saludo!!

Roman345
  • 451
  • 3
  • 12
  • No creo que te pidan meter el valor del campo `score.score` en `score.result`. Solo te piden mostrar la columna `score.result`. – Luis Cazares May 15 '19 at 13:45

1 Answers1

2

La consulta que tienes esta bastante bien, solo debes incluir el campo result de la tabla score. Es decir, no tienes que meter nada en el campo result de score, simplemente no incluir score.score y en cambio incluir score.result.

Tomando como base tu consulta, quedaría asi:

select score.dateresult, competition.compdescription, score.result, venue.venue
from score,competition,venue,webclient,athlete
where athlete.idathlete = score.idathlete
and score.idcompetition = competition.idcompetition
and competition.idvenue = venue.idvenue
and athlete.idathlete = webclient.idwebclient
and webclient.nick ='eisaza';

Dicho esto, estás escribiendo la consulta con un estilo muy antiguo, haciendo lo que se conoce como join implícito. Así solían escribirse antes de 1992 (si, 1992).

El estándar SQL 92, que a estas alturas está soportado por todos los motores, introdujo la sintaxis de join explícito, que simplifica la manera de escribir las consultas y las hace más fáciles de entender y de mantener.

En esta, básicamente se separa las condiciones que relacionan las tablas, de las condiciones que filtran los resultados de la consulta. Las condiciones que relacionan las tablas se van escribiendo a medida que se escribe la cláusula from.

Por otro lado, la sintaxis permite también expresar el tipo de join que vamos a hacer, si es inner, left [outer], right [outer] o full outer.

La consulta equivalente utilizando una sintaxis SQL moderna sería algo como esto:

select   score.dateresult
       , competition.compdescription
       , score.result
       , venue.venue
  from athlete 
       inner join webclient on webclient.idwebclient = athlete.idathlete
       inner join score on score.idathlete = athlete.idathlete
       inner join competition on competition.idcompetition = score.idcompetition
       inner join venue on venue.idvenue = competition.idvenue
 where webclient.nick = 'eisaza'
jachguate
  • 25,659
  • 7
  • 35
  • 61