Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Consulta compleja (https://www.clubdelphi.com/foros/showthread.php?t=45922)

Jesús Pena 18-07-2007 11:23:33

Consulta compleja
 
Tengo una base de datos en firebird 1.5 en la que tengo diversas tablas. Lo que necesito es lo siguiente :

Tengo una tabla de estados, una maestra y una detalle en la que cada registro puede estar en uno de los estados posibles y necesito hacer una consulta que me devuelva por cada registro de la tabla maestra el nombre del producto y el número (cuantos) de registros en la tabla de detalle que están en cada uno de los estados posibles (mostrando una columna por cada uno de los posibles estados).

Espero vuestra ayuda.

Un ejemplo sería
Código SQL [-]
producto                         alta           baja          modificacion      
producto 1                         1              1                   0
producto 2                        10              5                 70

ContraVeneno 18-07-2007 17:46:49

Si colocas un ejemplo de como estan los datos en la tabla maestra y como estan los datos en la tabla detalle, sería más facil visualizar como obtener lo que deseas.

Héctor Randolph 18-07-2007 17:57:13

Hola Jesús

Lo planteas, según entiendo es hacer un "Cross Table" o "Pivot Table".

Una forma de lograrlo es por medio de un procedimiento almacenado, pero en tu caso puede ser más simple si el número de estados posibles es fijo.

Prueba con un query de este tipo:

Código SQL [-]
SELECT detalle.id_producto,
  SUM (CASE detalle.estado WHEN 'alta' THEN 1 ELSE 0 END) alta,
  SUM (CASE detalle.estado WHEN 'baja' THEN 1 ELSE 0 END) baja,
  SUM (CASE detalle.estado WHEN 'modificacion' THEN 1 ELSE 0 END) modificacion,
FROM detalle 
GROUP BY detalle.id_producto

Aún no lo he probado, pero en principio debería funcionar con algunos ajustes.

Saludos

Jesús Pena 19-07-2007 07:54:40

Justo lo que necesito pero ...
 
Eso es justo lo que necesito pero con la particularidad de que los estados posibles no son fijos sino que son los posibles registros que existan en una tabla de estados, pero si es lo que buscaba.

Espero vuestra colaboración.

Mi intención es hacer una vista que me devuelva esos datos pero si no es posible tengo la posibilidad de construir la query por código desde mi aplicación.


La franja horaria es GMT +2. Ahora son las 09:37:15.

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