Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-07-2007
Avatar de Jesús Pena
Jesús Pena Jesús Pena is offline
Miembro
NULL
 
Registrado: nov 2005
Posts: 88
Poder: 14
Jesús Pena Va por buen camino
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

Última edición por vtdeleon fecha: 18-07-2007 a las 17:05:06.
Responder Con Cita
  #2  
Antiguo 18-07-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
NULL
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.722
Poder: 19
ContraVeneno Va por buen camino
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.
__________________

Responder Con Cita
  #3  
Antiguo 18-07-2007
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
NULL
 
Registrado: dic 2004
Posts: 882
Poder: 15
Héctor Randolph Va por buen camino
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
Responder Con Cita
  #4  
Antiguo 19-07-2007
Avatar de Jesús Pena
Jesús Pena Jesús Pena is offline
Miembro
NULL
 
Registrado: nov 2005
Posts: 88
Poder: 14
Jesús Pena Va por buen camino
Thumbs up 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.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Consulta dentro de otra consulta judit25 Conexión con bases de datos 1 25-06-2007 15:52:15
Sentencia SQL super compleja Sr.Scorpion SQL 14 08-03-2007 00:12:49
Consulta SQL algo compleja subzero Firebird e Interbase 2 26-10-2006 18:49:01
consulta SQL que me resulta compleja j2mg SQL 5 29-05-2003 22:50:13
consulta sobre consulta superhopi SQL 2 16-05-2003 19:01:47


La franja horaria es GMT +2. Ahora son las 10:57:45.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi