Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

[SOLUCIONADO] Sobre consulta con select multitabla.

Estas en el tema de Sobre consulta con select multitabla. en el foro de Mysql en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 09/11/2013, 07:08
 
Fecha de Ingreso: noviembre-2013
Ubicación: Barcelona
Mensajes: 33
Antigüedad: 11 años
Puntos: 0
Sobre consulta con select multitabla.

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:

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:

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,
  #2 (permalink)  
Antiguo 10/11/2013, 10:53
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años, 6 meses
Puntos: 320
Respuesta: Sobre consulta con select multitabla.

prueba esto:
Código SQL:
Ver original
  1. SELECT c.nomcurs,
  2. r.anyo,
  3. r.numordre,MIN(a.assistencia) AS min_ass,
  4. MAX(a.assistencia) AS max_ass,
  5. format(avg(a.assistencia),2) AS avg_ass,
  6. MIN(a.nota) AS min_nota,
  7. MAX(a.nota) AS max_nota,
  8. format(avg(a.nota),2) AS avg_nota
  9. FROM alumnescurs a, realitzaciocurs r, cursos c GROUP BY c.codicurs
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #3 (permalink)  
Antiguo 10/11/2013, 11:08
 
Fecha de Ingreso: noviembre-2013
Ubicación: Barcelona
Mensajes: 33
Antigüedad: 11 años
Puntos: 0
Respuesta: Sobre consulta con select multitabla.

Hola NSD,

Muchas gracias NSD.

Que gilipollez era el group by ya me vale a mi, sin embargo las notas me salen con la mismas notas y asistencias en los dos cursos.
  #4 (permalink)  
Antiguo 10/11/2013, 11:21
 
Fecha de Ingreso: noviembre-2013
Ubicación: Barcelona
Mensajes: 33
Antigüedad: 11 años
Puntos: 0
Respuesta: Sobre consulta con select multitabla.

Ya lo tengo hecho, jopes si que le di vueltas.

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;

Etiquetas: select, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:13.