MySQL - Sobre consulta con select multitabla.

   
Vista:

Sobre consulta con select multitabla.

Publicado por jose (12 intervenciones) el 10/11/2013 11:49:41
Hola a todos,

Tengo un gran dilema que no se como solucionar:

No entiendo por que con la sentencia que expongo sólo me sale uno de los cursos y no los dos que existen:

1
2
3
4
5
6
7
8
9
select c.nomcurs,
r.anyo,
r.numordre,min(a.assistencia) as min_ass,
max(a.assistencia) as max_ass,
format(avg(a.assistencia),2) as avg_ass,
min(a.nota) as min_nota,
max(a.nota) as max_nota,
format(avg(a.nota),2) as avg_nota
from alumnescurs a, realitzaciocurs r, cursos c;

Expongo las tablas:

1
2
3
4
5
6
7
ALUMNESCURS (codicurs,anyo,numordre,alumne,certificat,assisten cia,nota) where (codicurs) REF. CURSOS
 
REALITZACIOCURS(codicurs,anyo,numordre,coordinador ) where (codicurs) REF. CURSOS
 
CURSOS(codicurs,nomcurs,durada,descripcio)
 
PERSONES(dni,nom,cognom,genere,etc.....)

Lo que me ocurre es que es que si pongo este codigo me sale esto:

| nomcurs | anyo | numordre | min_ass | max_ass | avg_ass | min_nota | max_nota | avg_nota |
+---------------+------+----------+---------+---------+---------+----------+----------+----------+
| Xarxes locals | 2010 | 1 | 70 | 97 | 84.50 | 6 | 9 | 7.67 |
+---------------+------+----------+---------+---------+---------+----------+----------+----------+
1 row in set (0.00 sec)

Cuando en cursos tenemos dos cursos:

mysql> select * from cursos;
+----------+----------------+--------+----------------+
| codicurs | nomcurs | durada | descripcio |
+----------+----------------+--------+----------------+
| 100 | Xarxes locals | 200 | Xarxes locals |
| 101 | Bases de dades | 240 | Bases de dades |
+----------+----------------+--------+----------------+
2 rows in set (0.00 sec)

Lo que necesito es que me salga los dos cursos, con sus medias por cursos.

Muchas gracias,
Jose Luis,
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Sobre consulta con select multitabla.

Publicado por xve (899 intervenciones) el 10/11/2013 19:02:39
Hola Jose Luis, viendo tu consulta, no me queda nada claras las vinculaciones... estas mostrando datos de tres tablas, las cuales no las has vinculado, por lo que la información no sera correcta.

Prueba utilizar JOIN para vincular tus tablas, luego de seguro te aparecerán tus registros correctamente.

De las tablas que nos has mostrados, cuales son las columnas primary key, y con que campos están vinculadas?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Sobre consulta con select multitabla.

Publicado por jose (12 intervenciones) el 10/11/2013 19:37:47
Hola xve,

Muchas gracias por tu ayuda.

He dado con la respuesta lo he hecho de esta manera.

SELECT c.nomcurs,
r.anyo,
r.numordre,min(a.assistencia) AS min_ass,
max(a.assistencia) AS max_ass,
format(avg(a.assistencia),2) AS avg_ass,
min(a.nota) AS min_nota,
max(a.nota) AS max_nota,
format(avg(a.nota),2) AS avg_nota
FROM alumnescurs a
right join cursos c on a.codicurs=c.codicurs
right join realitzaciocurs r on r.codicurs=c.codicurs
group BY c.codicurs;

muchas gracias,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de xve

Sobre consulta con select multitabla.

Publicado por xve (899 intervenciones) el 10/11/2013 20:23:11
Gracias por comentarlo Jose, ahora ya se entiende bien...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar