ayuda para generar consulta

09/02/2005 - 23:29 por Rosario | Informe spam
Que tal, tengo un pequeño problema espero y me puedan ayudar.

Tengo 2 tablas una Llamada Examenes y otra Detalle_Examen, el la de Examenes
guardo el No. de Examen, el nombre del examen y el tipo de examen y en la de
detalle examen guardo quien realizo el examen, No. de examen y calificacion.
Si hago una consulta de cuales examenes ha presentado un alumno y su
calificación correspondiente si la puedo hacer, pero yo lo que quiero es
hacer una consulta que me diga cuales examenes no ha presentado el alumno.

La estructura de mis tablas es la siguiente:

Examenes
PK id_examen
nombre_examen
tipo_examen

Detalle_examen
PK id_detalle_examen
FK id_examen
FK id_alumno
Calificacion

Espero y me puedan auxiliar en como hacer esta consulta, muchas gracias.

Preguntas similare

Leer las respuestas

#1 MAXI
10/02/2005 - 00:43 | Informe spam
Hola, pues creo que esto te resolveria esa pregunta:

Select examenes.nombre_examen,examenes.tipo_examen,detalle_examen.id_alumno
from
examenes left join detalle_examenes on
examenes.id_examen = detalle_examenes.id_examen and
where detalle_examenes.id_examen is null

pd: Esto traera los examenes que no han dado los alumnos, si tuvieras una
tabla alumnos podrias filtrar para ver mas cosas

Gracias por pasar la estructura de las tablas y espero te ayude la query :-)



Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)

MSN:
"Rosario" escribió en el mensaje
news:u$
Que tal, tengo un pequeño problema espero y me puedan ayudar.

Tengo 2 tablas una Llamada Examenes y otra Detalle_Examen, el la de
Examenes guardo el No. de Examen, el nombre del examen y el tipo de examen
y en la de detalle examen guardo quien realizo el examen, No. de examen y
calificacion. Si hago una consulta de cuales examenes ha presentado un
alumno y su calificación correspondiente si la puedo hacer, pero yo lo que
quiero es hacer una consulta que me diga cuales examenes no ha presentado
el alumno.

La estructura de mis tablas es la siguiente:

Examenes
PK id_examen
nombre_examen
tipo_examen

Detalle_examen
PK id_detalle_examen
FK id_examen
FK id_alumno
Calificacion

Espero y me puedan auxiliar en como hacer esta consulta, muchas gracias.



Respuesta Responder a este mensaje
#2 Alejandro Mesa
10/02/2005 - 01:45 | Informe spam
Rosario,

Ademas de la forma usada por Maxi, tambien puedes usar la palabra clave
EXISTS para filtrar la tabla Examenes.

select * from Examenes as e
where not exists(select * from Detalle_examen as d where d.id_examen =
e.id_examen)


AMB


Examenes
PK id_examen
nombre_examen
tipo_examen

Detalle_examen
PK id_detalle_examen
FK id_examen
FK id_alumno
Calificacion




"Rosario" wrote:

Que tal, tengo un pequeño problema espero y me puedan ayudar.

Tengo 2 tablas una Llamada Examenes y otra Detalle_Examen, el la de Examenes
guardo el No. de Examen, el nombre del examen y el tipo de examen y en la de
detalle examen guardo quien realizo el examen, No. de examen y calificacion.
Si hago una consulta de cuales examenes ha presentado un alumno y su
calificación correspondiente si la puedo hacer, pero yo lo que quiero es
hacer una consulta que me diga cuales examenes no ha presentado el alumno.

La estructura de mis tablas es la siguiente:

Examenes
PK id_examen
nombre_examen
tipo_examen

Detalle_examen
PK id_detalle_examen
FK id_examen
FK id_alumno
Calificacion

Espero y me puedan auxiliar en como hacer esta consulta, muchas gracias.




Respuesta Responder a este mensaje
#3 MAXI
10/02/2005 - 01:52 | Informe spam
Hola Ale, ojo con esto, hay veces que los planes te pueden jugar una mala
pasada al igual que IN :(, lo recomendable por MS es tratar de usar JOIN
donde se pueda :-)



Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)

MSN:
"Alejandro Mesa" escribió en el
mensaje news:
Rosario,

Ademas de la forma usada por Maxi, tambien puedes usar la palabra clave
EXISTS para filtrar la tabla Examenes.

select * from Examenes as e
where not exists(select * from Detalle_examen as d where d.id_examen > e.id_examen)


AMB


Examenes
PK id_examen
nombre_examen
tipo_examen

Detalle_examen
PK id_detalle_examen
FK id_examen
FK id_alumno
Calificacion




"Rosario" wrote:

Que tal, tengo un pequeño problema espero y me puedan ayudar.

Tengo 2 tablas una Llamada Examenes y otra Detalle_Examen, el la de
Examenes
guardo el No. de Examen, el nombre del examen y el tipo de examen y en la
de
detalle examen guardo quien realizo el examen, No. de examen y
calificacion.
Si hago una consulta de cuales examenes ha presentado un alumno y su
calificación correspondiente si la puedo hacer, pero yo lo que quiero es
hacer una consulta que me diga cuales examenes no ha presentado el
alumno.

La estructura de mis tablas es la siguiente:

Examenes
PK id_examen
nombre_examen
tipo_examen

Detalle_examen
PK id_detalle_examen
FK id_examen
FK id_alumno
Calificacion

Espero y me puedan auxiliar en como hacer esta consulta, muchas gracias.




Respuesta Responder a este mensaje
#4 Alejandro Mesa
10/02/2005 - 02:19 | Informe spam
Hola Maxi,

Tengo conocimiento de las malas jugadas al usar IN y tener valores NULL que
participan en las comparaciones. Nunca he tenido problemas usando EXISTS, lo
unico que pudiera senialar en este caso es el uso de NOT EXISTS, lo cual no
se consideraria como un argumento de busqueda por parte del compilador a la
hora de buscar un plan de ejecucion. Solo quise hacer una referencia, por mi
parte trato de usar Join siempre que puedo. Otra cosa, pensar en soluciones
de conjunto es algo que toma tiempo aprender, por lo que a veces
trato de usar sentencias que sean mas facil de leer desde el punto de vista
de la logica.

Saludos,


AMB

"MAXI" wrote:

Hola Ale, ojo con esto, hay veces que los planes te pueden jugar una mala
pasada al igual que IN :(, lo recomendable por MS es tratar de usar JOIN
donde se pueda :-)



Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)

MSN:
"Alejandro Mesa" escribió en el
mensaje news:
> Rosario,
>
> Ademas de la forma usada por Maxi, tambien puedes usar la palabra clave
> EXISTS para filtrar la tabla Examenes.
>
> select * from Examenes as e
> where not exists(select * from Detalle_examen as d where d.id_examen > > e.id_examen)
>
>
> AMB
>
>
>> Examenes
>> PK id_examen
>> nombre_examen
>> tipo_examen
>>
>> Detalle_examen
>> PK id_detalle_examen
>> FK id_examen
>> FK id_alumno
>> Calificacion
>
>
> "Rosario" wrote:
>
>> Que tal, tengo un pequeño problema espero y me puedan ayudar.
>>
>> Tengo 2 tablas una Llamada Examenes y otra Detalle_Examen, el la de
>> Examenes
>> guardo el No. de Examen, el nombre del examen y el tipo de examen y en la
>> de
>> detalle examen guardo quien realizo el examen, No. de examen y
>> calificacion.
>> Si hago una consulta de cuales examenes ha presentado un alumno y su
>> calificación correspondiente si la puedo hacer, pero yo lo que quiero es
>> hacer una consulta que me diga cuales examenes no ha presentado el
>> alumno.
>>
>> La estructura de mis tablas es la siguiente:
>>
>> Examenes
>> PK id_examen
>> nombre_examen
>> tipo_examen
>>
>> Detalle_examen
>> PK id_detalle_examen
>> FK id_examen
>> FK id_alumno
>> Calificacion
>>
>> Espero y me puedan auxiliar en como hacer esta consulta, muchas gracias.
>>
>>
>>
>>



Respuesta Responder a este mensaje
#5 MAXI
10/02/2005 - 02:32 | Informe spam
ok, solo te hice el comentario por las dudas, no lo tomes a mal si?



Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)

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

Tengo conocimiento de las malas jugadas al usar IN y tener valores NULL
que
participan en las comparaciones. Nunca he tenido problemas usando EXISTS,
lo
unico que pudiera senialar en este caso es el uso de NOT EXISTS, lo cual
no
se consideraria como un argumento de busqueda por parte del compilador a
la
hora de buscar un plan de ejecucion. Solo quise hacer una referencia, por
mi
parte trato de usar Join siempre que puedo. Otra cosa, pensar en
soluciones
de conjunto es algo que toma tiempo aprender, por lo que a veces
trato de usar sentencias que sean mas facil de leer desde el punto de
vista
de la logica.

Saludos,


AMB

"MAXI" wrote:

Hola Ale, ojo con esto, hay veces que los planes te pueden jugar una mala
pasada al igual que IN :(, lo recomendable por MS es tratar de usar JOIN
donde se pueda :-)



Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)

MSN:
"Alejandro Mesa" escribió en el
mensaje news:
> Rosario,
>
> Ademas de la forma usada por Maxi, tambien puedes usar la palabra clave
> EXISTS para filtrar la tabla Examenes.
>
> select * from Examenes as e
> where not exists(select * from Detalle_examen as d where d.id_examen >> > e.id_examen)
>
>
> AMB
>
>
>> Examenes
>> PK id_examen
>> nombre_examen
>> tipo_examen
>>
>> Detalle_examen
>> PK id_detalle_examen
>> FK id_examen
>> FK id_alumno
>> Calificacion
>
>
> "Rosario" wrote:
>
>> Que tal, tengo un pequeño problema espero y me puedan ayudar.
>>
>> Tengo 2 tablas una Llamada Examenes y otra Detalle_Examen, el la de
>> Examenes
>> guardo el No. de Examen, el nombre del examen y el tipo de examen y en
>> la
>> de
>> detalle examen guardo quien realizo el examen, No. de examen y
>> calificacion.
>> Si hago una consulta de cuales examenes ha presentado un alumno y su
>> calificación correspondiente si la puedo hacer, pero yo lo que quiero
>> es
>> hacer una consulta que me diga cuales examenes no ha presentado el
>> alumno.
>>
>> La estructura de mis tablas es la siguiente:
>>
>> Examenes
>> PK id_examen
>> nombre_examen
>> tipo_examen
>>
>> Detalle_examen
>> PK id_detalle_examen
>> FK id_examen
>> FK id_alumno
>> Calificacion
>>
>> Espero y me puedan auxiliar en como hacer esta consulta, muchas
>> gracias.
>>
>>
>>
>>



Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida