FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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. |
#2
|
|||
|
|||
Podrias poner los campos de las tablas y como se relacionan entre ellas? Asi podriamos mirar de hacer el SQL
|
#3
|
||||
|
||||
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, (select sum(Horas) from TablaHoras H where H.Actividad = A.Actiidad) from Actividades A Espero que se entienda y que te sirva Saludos. |
#4
|
|||
|
|||
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. |
#5
|
|||
|
|||
a ver si te sirve esto
Código:
select sum(horas) from parte p, linParte l, actividad a where o.obra = 'Obra que quiero' and l.parte = p.parte and a.actividad = l.actividad |
#6
|
|||
|
|||
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,... |
#7
|
|||
|
|||
si nombre pertenece a la tabla Actividad por qué no puedes hacerlo???? Te da algún tipo de error??
|
#8
|
|||
|
|||
jejejeje, claro que te da un error
debes añadir al SQL una clausula Group By Código:
select a.nombre, sum(horas) from parte p, linParte l, actividad a where o.obra = 'Obra que quiero' and l.parte = p.parte and a.actividad = l.actividad group by a.nombre |
#9
|
|||
|
|||
Perfecto, muchas gracias, era eso que faltaba la cláusula Group By.
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Consultas SQL V.S. Consultas Clipper | AGAG4 | SQL | 7 | 20-12-2005 15:59:31 |
consultas anidadas: group by dentro otro group by | DobleSiete | SQL | 7 | 31-01-2005 14:59:31 |
Error en consultas SQL con controles ADO | Tecnic2 | SQL | 2 | 21-09-2004 11:22:41 |
Consultas anidadas en procedimientos almacenados | Choclito | Firebird e Interbase | 7 | 18-07-2004 22:06:33 |
Consultas anidadas | jmselesan | Firebird e Interbase | 1 | 08-08-2003 16:20:08 |
|