Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   problema con consulta sql (https://www.clubdelphi.com/foros/showthread.php?t=68912)

gonza_619 11-07-2010 20:27:45

problema con consulta sql
 
hola a todos, bueno mi problema es que necesito hacer una consulta, y estas son mis tablas
ALUMNOS:NRO_ALUM,APYNOM.
MATERIAS:COD_MAT,NOMBRE,AÑO.
NOTAS:COD_ALUM,COD_MAT,NOTA,FECHA.

bien, lo que me pide la consulta es listar los nombres de los alumnos que aprobaron finales
bueno, utilizo en un form un dbgrid para mostrar el resultado,un tquery y en un tbutton intriduzco la consulta esta:

query1.SQL.Clear;
query1.SQL.add('select n.nota,a.apellido_nombre from notas as n');
query1.SQL.Add('inner join alumnos as a on (n.cod_alumno = a.cod_alumno) and (n.nota > 4)');
query1.Active:=true;
query1.Open;

el problema que me salta es: type mismatch in expression.'
no se que puede ser, el campo nota esta bien escrito, y si borro la parte de (n.nota > 4) me muestra el resultado sin problemas, que podria ser el error ? gracais

Casimiro Notevi 11-07-2010 21:44:40

Si no me he equivocado y el aprobado es una nota mayor de 4, entonces debe ser algo así:

Código SQL [-]
select a.apynom, m.nombre, n.nota 
from tbalumnos a
inner join notas n on n.cod_alum=a.nro_alum
inner join materias m on m.cod_mat=n.cod_mat
where n.nota>4

gonza_619 11-07-2010 22:02:59

consultas sql
 
hola, no lo he probado pero solo me interesa saber las notas, no el nombre de las materias, me funciona bien si saco la parte de : n.nota>4. pero cuando lo coloco me tira ese error. los campos estan bien relacionados.

PERDON, ERA MI ERROR QUE EL CAMPO NOTA ESTABA COMO ALFANUMERICO, POR LO TANTO SERIA N.NOTA>"4"
GRACIAS IGUALMENTE

Casimiro Notevi 12-07-2010 01:37:40

Bueno, pues no pongas la materia:

Código SQL [-]
select a.apynom, n.nota
from tbalumnos a
inner join notas n on n.cod_alum=a.nro_alum
where n.nota>4

gonza_619 14-07-2010 21:04:46

problema con consulta sql
 
hola amigos, miren tengo una consulta q no me sale
tengo 3 tablas :
ALUMNOS: COD_ALUM, APE_NOMBRE
NOTAS: COD_ALUM,COD_MATERIA,FECHA,NOTA
(COD_ALUM,COD_MATERIA Y FECHA SON PKEY)
MATERIAS:COD_MATERIA,NOMBRE,AÑO

BIEN AHORA QUIERO SABER LOS ALUMNOS QUE APROBARON FINALES, PERO UN ALUMNO TIENE UN 2 EN UNA MATERIA Y UN 8 EN OTRA EN DISTINTA FECHA
YO EN LA CONSULTA PONGO=
SELECT A.APE_NOMBRE,N.NOTA FROM NOTA AS N
INNER JOIN ALUMNOS AS A ON (A.COD_ALUM=N.COD_ALUM) AND (NOTA>"4")

BIEN AHORA NO ME MUESTRA EL ALUMNO QUE SE SACO UN 2 EN UNA Y UN 8 EN OTRA YA QUE AL PARECER LO CONDICIONA EL 2
COMO PODRIA HACER , YA QUE APROBO UN FINAL Y LO TENDRIA QUE MOSTRAR, YA PROBE CON DISTINCT Y TAMPOCO SALIO

Casimiro Notevi 14-07-2010 21:55:26

Por favor, continúa en el otro hilo que iniciaste sobre este tema, gracias.


p.d.: voy a unir ambos hilos.

Jac fcc 22-07-2010 20:42:56

Cita:

SELECT A.APE_NOMBRE,N.NOTA FROM NOTA AS N
INNER JOIN ALUMNOS AS A ON (A.COD_ALUM=N.COD_ALUM) AND (NOTA>"4")
intenta con esto:
Código Delphi [-]
SELECT A.APE_NOMBRE,SUM(N.NOTA)RESULTADO FROM NOTA AS N INNER JOIN ALUMNOS AS A  ON A.COD_ALUM=N.COD_ALUM INNER JOIN MATERIAS AS M ON M.COD_MATERIA=N.COD_MATERIA GROUP BY A.APE_NOMBRE HAVING RESULTADO > 10

Los inner permiten obtener todos los alumnos con sus respectivas notas de todas las materias.
el having comprueba que apruebe las materias (tomando en cuenta que la materia se aprueba con calificaciones mayores a 5, y en este ejemplo que son solo dos materias).:cool:


La franja horaria es GMT +2. Ahora son las 02:35:19.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi