Consultas Anidadas o Maestro/Detalle?
Hola quiero hacer una consulta anidada, y no se muy bien como hacerlo.
YO hago lo siguiente realizo una consulta, ej:busco unas actividades, y luego de estas actividades me interesa saber el total de horas que se han realizado, y para ello hago esto Una 1ª Query donde busco las Actividades, y después una 2ª Query donde busco las horas de las actividades encontradas en la 1ª Query. Para ello en el DataSource de la 2ª Query le meto el DataAccess que esta relacionado con la 1ª Query. Y en la 2ª query hago referencia al campo que enlaza ambas Querys (relación maestro/detalle) mediante un parametro en la cláusula WHERE. Pero pasa lo siguiente: La 1ª Query me muestra todas las ACtividades que busco, pero en la 2ª Query sólo me muestra las horas de la primera Actividad. |
Podrias poner los campos de las tablas y como se relacionan entre ellas? Asi podriamos mirar de hacer el SQL
|
Hola,
como te dice cadetill lo mejor que puedes hacer explicar un poco más sobre tus tablas, ya que será más fácil obtener una solución. En primer lugar es normal que el usar 2 queries ligadas por el DataSource del detalle no te sirva para tu caso concreto. El DataSource de un Query te permite simular un maestro/detalle, pero parece que lo que tu necesitas es algo más que eso. A grosso modo, el SQL debería ser algo así: Código:
select campo1, ... , campoN, Espero que se entienda y que te sirva :) Saludos. |
Os comento un poco mejor.
Tengo una tablas Parte_Trabajo, Lin_Parte_Trabajo, Obra y Actividad. Y yo quiero obtener el total de horas de todas las Actividades en que se han realizado en una cierta Obra. En Parte Trabajo, almaceno un campo Obra que es una Clave Ajena a la tabla Obra. En la tabla Lin_Parte_Trabajo, relaciono dicha tabla con Parte Trabajo mediante un campo llamado PARTE, y otro campo Actividad para relacionar con la table Actividad. |
a ver si te sirve esto
Código:
|
Gracias por vuestras respuestas.
Cadetill como tu dices obtengo las horas totales de cada actividad, pero es que yo quiero que me muestre el nombre de la actividad y las horas totales. y esto no puedo hacerlo SELECT A.NOMBRE, SUM(LP.HORA_TOTAL) AS SUMA FROM ACTIVIDADES A,... |
si nombre pertenece a la tabla Actividad por qué no puedes hacerlo???? Te da algún tipo de error?? :confused:
|
jejejeje, claro que te da un error :p
debes añadir al SQL una clausula Group By Código:
select a.nombre, sum(horas) |
Perfecto, muchas gracias, era eso que faltaba la cláusula Group By.
;) |
La franja horaria es GMT +2. Ahora son las 18:07:47. |
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