Ayuda con Vista

01/08/2005 - 17:06 por Omar Flores | Informe spam
Hola a todos, nuevamente solicitando su valiosa ayuda para resolver el
siguiente problema:

Cuento con las siguientes 3 Tablas

Alumnos
id_alumno, nombre

Examenes
id_examen, nombre_examen

Detalle
id, id_alumno, id_examen, calificación

Y necesito crear una vista con los siguientes datos

id, id_alumno, "total_examenes_presentados", "total_de_examenes"

Para poder gráfiicar el porcentaje de avance de los exámenes presentados por
alumno y en general.

Espero y me puedan dar algun ejemplo de como hacer esto.

Muchas gracias por su ayuda y tiempo.

Saludos y que tengan un excelente día.

Preguntas similare

Leer las respuestas

#6 Alejandro Mesa
01/08/2005 - 22:04 | Informe spam
Maxi,

Un comentario. Basado en el query, el detalle.total puede ser null para
alumnos que no se hayan presentado a ningun examen, debido al uso de "left
join" y por lo tanto la expresion:

(select count(id_examen) from
examenes) - detalle.total as faltantes



sera null como resultado. Creo que debemos usar isnull o coalesce:

...
(select count(id_examen) from examenes) - isnull(detalle.total,0) as
faltantes
from
...


AMB


AMB

"Maxi" wrote:

Select alumnos.id_alumno, alumnos.nombre,(select count(id_examen) from
examenes) as total_examenes,
detalle.total as total_examenes_presentados,

(select count(id_examen) from
examenes) - detalle.total as faltantes

FROM alumnos left join (select id_alumno,count(id) as total FROM detalle
group by id_alumno) detalle on
detalle.id_alumno = alumnos.id_alumno




Salu2
Maxi


"Omar Flores" escribió en el mensaje
news:
> Una disculpa, pero ahora necesito hacer es esto
>
> id, id_alumno, total_de_examenes ,total_examenes_presentados,
> total_examenes_faltantes
>
> Donde total_examenes_faltantes= total_examenes -
> total_examenes_presentados.
>
> Muchas gracias por su Gran Ayuda.
>
> Saludos.
>
>
> total de examenes - examenespresntador
> "Omar Flores" escribió en el mensaje
> news:
>> Si me sirvio, muchas gracias.
>>
>> "Maxi" escribió en el mensaje
>> news:
>>> Hola Omar, quizas esta query te ayude:
>>>
>>> Select alumnos.id_alumno, alumnos.nombre,(select count(id_examen) from
>>> examenes) as total_examenes,
>>> detalle.total as total_examenes_presentados
>>> FROM alumnos left join (select id_alumno,count(id) as total FROM detalle
>>> group by id_alumno) detalle on
>>> detalle.id_alumno = alumnos.id_alumno
>>>
>>>
>>> Salu2
>>> Maxi
>>>
>>>
>>> "Omar Flores" escribió en el mensaje
>>> news:
>>>> Hola a todos, nuevamente solicitando su valiosa ayuda para resolver el
>>>> siguiente problema:
>>>>
>>>> Cuento con las siguientes 3 Tablas
>>>>
>>>> Alumnos
>>>> id_alumno, nombre
>>>>
>>>> Examenes
>>>> id_examen, nombre_examen
>>>>
>>>> Detalle
>>>> id, id_alumno, id_examen, calificación
>>>>
>>>> Y necesito crear una vista con los siguientes datos
>>>>
>>>> id, id_alumno, "total_examenes_presentados", "total_de_examenes"
>>>>
>>>> Para poder gráfiicar el porcentaje de avance de los exámenes
>>>> presentados por alumno y en general.
>>>>
>>>> Espero y me puedan dar algun ejemplo de como hacer esto.
>>>>
>>>> Muchas gracias por su ayuda y tiempo.
>>>>
>>>> Saludos y que tengan un excelente día.
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>
>



Respuesta Responder a este mensaje
#7 Maxi
01/08/2005 - 22:11 | Informe spam
Hola, en eso tienes toda la razon :-))))


Salu2
Maxi


"Alejandro Mesa" escribió en el
mensaje news:
Maxi,

Un comentario. Basado en el query, el detalle.total puede ser null para
alumnos que no se hayan presentado a ningun examen, debido al uso de "left
join" y por lo tanto la expresion:

(select count(id_examen) from
examenes) - detalle.total as faltantes



sera null como resultado. Creo que debemos usar isnull o coalesce:

...
(select count(id_examen) from examenes) - isnull(detalle.total,0) as
faltantes
from
...


AMB


AMB

"Maxi" wrote:

Select alumnos.id_alumno, alumnos.nombre,(select count(id_examen) from
examenes) as total_examenes,
detalle.total as total_examenes_presentados,

(select count(id_examen) from
examenes) - detalle.total as faltantes

FROM alumnos left join (select id_alumno,count(id) as total FROM detalle
group by id_alumno) detalle on
detalle.id_alumno = alumnos.id_alumno




Salu2
Maxi


"Omar Flores" escribió en el mensaje
news:
> Una disculpa, pero ahora necesito hacer es esto
>
> id, id_alumno, total_de_examenes ,total_examenes_presentados,
> total_examenes_faltantes
>
> Donde total_examenes_faltantes= total_examenes -
> total_examenes_presentados.
>
> Muchas gracias por su Gran Ayuda.
>
> Saludos.
>
>
> total de examenes - examenespresntador
> "Omar Flores" escribió en el mensaje
> news:
>> Si me sirvio, muchas gracias.
>>
>> "Maxi" escribió en el mensaje
>> news:
>>> Hola Omar, quizas esta query te ayude:
>>>
>>> Select alumnos.id_alumno, alumnos.nombre,(select count(id_examen)
>>> from
>>> examenes) as total_examenes,
>>> detalle.total as total_examenes_presentados
>>> FROM alumnos left join (select id_alumno,count(id) as total FROM
>>> detalle
>>> group by id_alumno) detalle on
>>> detalle.id_alumno = alumnos.id_alumno
>>>
>>>
>>> Salu2
>>> Maxi
>>>
>>>
>>> "Omar Flores" escribió en el mensaje
>>> news:
>>>> Hola a todos, nuevamente solicitando su valiosa ayuda para resolver
>>>> el
>>>> siguiente problema:
>>>>
>>>> Cuento con las siguientes 3 Tablas
>>>>
>>>> Alumnos
>>>> id_alumno, nombre
>>>>
>>>> Examenes
>>>> id_examen, nombre_examen
>>>>
>>>> Detalle
>>>> id, id_alumno, id_examen, calificación
>>>>
>>>> Y necesito crear una vista con los siguientes datos
>>>>
>>>> id, id_alumno, "total_examenes_presentados", "total_de_examenes"
>>>>
>>>> Para poder gráfiicar el porcentaje de avance de los exámenes
>>>> presentados por alumno y en general.
>>>>
>>>> Espero y me puedan dar algun ejemplo de como hacer esto.
>>>>
>>>> Muchas gracias por su ayuda y tiempo.
>>>>
>>>> Saludos y que tengan un excelente día.
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>
>



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida