FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Agrupar datos de una tabla
Hola a todos.
Tengo la siguiente estructura de datos de una tabla Firebird 1.5, en la que tengo un ID del recibo y los detalles de los mismos. CREATE TABLE "RE0010DG" ( "ID_REBUT" INTEGER NOT NULL, "ID_ARBIT1" INTEGER, "ID_ARBIT2" INTEGER, "ID_ARBIT3" INTEGER, "ID_ARBIT4" INTEGER, "ID_ARBIT5" INTEGER, "ID_ARBIT6" INTEGER, "ID_ARBIT7" INTEGER, "ID_ARBIT8" INTEGER, "KM1" INTEGER, "KM2" INTEGER, "KM3" INTEGER, "KM4" INTEGER, "KM5" INTEGER, "KM6" INTEGER, "KM7" INTEGER, "KM8" INTEGER, "SOBRES_1" NUMERIC(9, 2), "SOBRES_2" NUMERIC(9, 2), "SOBRES_3" NUMERIC(9, 2), "SOBRES_4" NUMERIC(9, 2), "SOBRES_5" NUMERIC(9, 2), "SOBRES_6" NUMERIC(9, 2), "SOBRES_7" NUMERIC(9, 2), "SOBRES_8" NUMERIC(9, 2), "IMPORT_1" NUMERIC(9, 2), "IMPORT_2" NUMERIC(9, 2), "IMPORT_3" NUMERIC(9, 2), "IMPORT_4" NUMERIC(9, 2), "IMPORT_5" NUMERIC(9, 2), "IMPORT_6" NUMERIC(9, 2), "IMPORT_7" NUMERIC(9, 2), "IMPORT_8" NUMERIC(9, 2), "IMPORT_KM_1" NUMERIC(9, 2), "IMPORT_KM_2" NUMERIC(9, 2), "IMPORT_KM_3" NUMERIC(9, 2), "IMPORT_KM_4" NUMERIC(9, 2), "IMPORT_KM_5" NUMERIC(9, 2), "IMPORT_KM_6" NUMERIC(9, 2), "IMPORT_KM_7" NUMERIC(9, 2), "IMPORT_KM_8" NUMERIC(9, 2), "CAMPIONAT1" NUMERIC(9, 2), "CAMPIONAT2" NUMERIC(9, 2), "CAMPIONAT3" NUMERIC(9, 2), "CAMPIONAT4" NUMERIC(9, 2), "CAMPIONAT5" NUMERIC(9, 2), "CAMPIONAT6" NUMERIC(9, 2), "CAMPIONAT7" NUMERIC(9, 2), "CAMPIONAT8" NUMERIC(9, 2), "FEINER1" NUMERIC(9, 2), "FEINER2" NUMERIC(9, 2), "FEINER3" NUMERIC(9, 2), "FEINER4" NUMERIC(9, 2), "FEINER5" NUMERIC(9, 2), "FEINER6" NUMERIC(9, 2), "FEINER7" NUMERIC(9, 2), "FEINER8" NUMERIC(9, 2), "DOS_SECTORS1" NUMERIC(9, 2), "DOS_SECTORS2" NUMERIC(9, 2), "DOS_SECTORS3" NUMERIC(9, 2), "DOS_SECTORS4" NUMERIC(9, 2), "DOS_SECTORS5" NUMERIC(9, 2), "DOS_SECTORS6" NUMERIC(9, 2), "DOS_SECTORS7" NUMERIC(9, 2), "DOS_SECTORS8" NUMERIC(9, 2), "TOTAL_A1" NUMERIC(9, 2), "TOTAL_A2" NUMERIC(9, 2), "TOTAL_A3" NUMERIC(9, 2), "TOTAL_A4" NUMERIC(9, 2), "TOTAL_A5" NUMERIC(9, 2), "TOTAL_A6" NUMERIC(9, 2), "TOTAL_A7" NUMERIC(9, 2), "TOTAL_A8" NUMERIC(9, 2), "A1" VARCHAR(1) CHARACTER SET ISO8859_1 COLLATE ES_ES, "A2" VARCHAR(1) CHARACTER SET ISO8859_1 COLLATE ES_ES, "A3" VARCHAR(1) CHARACTER SET ISO8859_1 COLLATE ES_ES, "A4" VARCHAR(1) CHARACTER SET ISO8859_1 COLLATE ES_ES, "A5" VARCHAR(1) CHARACTER SET ISO8859_1 COLLATE ES_ES, "A6" VARCHAR(1) CHARACTER SET ISO8859_1 COLLATE ES_ES, "A7" VARCHAR(1) CHARACTER SET ISO8859_1 COLLATE ES_ES, "A8" VARCHAR(1) CHARACTER SET ISO8859_1 COLLATE ES_ES, "F1" VARCHAR(1) CHARACTER SET ISO8859_1 COLLATE ES_ES, "F2" VARCHAR(1) CHARACTER SET ISO8859_1 COLLATE ES_ES, "F3" VARCHAR(1) CHARACTER SET ISO8859_1 COLLATE ES_ES, "F4" VARCHAR(1) CHARACTER SET ISO8859_1 COLLATE ES_ES, "F5" VARCHAR(1) CHARACTER SET ISO8859_1 COLLATE ES_ES, "F6" VARCHAR(1) CHARACTER SET ISO8859_1 COLLATE ES_ES, "F7" VARCHAR(1) CHARACTER SET ISO8859_1 COLLATE ES_ES, "F8" VARCHAR(1) CHARACTER SET ISO8859_1 COLLATE ES_ES ); Necesitaria poder sacar los datos agrupados por ID_ARBITRE pero el problema es que el valor de este ID, puede estar en cualquiera de las ocho columnas posibles. Vamos que lo que necesitaria es poder sacar todos los registros donde aparezca por ejemplo el valor del arbitro 1, algo así: Arbitro 1 Recibo 1 Recibo 3 Recibo 5 Arbitro 2 Recibo 1 Recibo 2 Recibo 3 y sucesivamente, para sacar una hoja por cada arbitro. El problema que tengo y que no se como solventar es que el valor del ID_ARBITRE = 1 puede estar tanto en ID_ARBITRE_1, ID_ARBITRE_2,ID_ARBITRE_3, ID_ARBITRE_4,ID_ARBITRE_5, ID_ARBITRE_6,ID_ARBITRE_7, ID_ARBITRE_8, pero solo una vez en cada recibo. Luego todos los campos adicionales son los que tienen el mismo numero ID_ARBITRE_1 -> KM_1 -> TOTAL_1, etc. No se si se debe usar algo de inner join o así. Gracias por adelantado. Josep |
#2
|
||||
|
||||
Bon dia xiquet.
Si te he entendido bien solo uno de los campos ID_ARBITRE_1, ID_ARBITRE_2, ID_ARBITRE_3, ... va a tener valor. En ese caso puedes utilizar la función COALESCE(ID_ARBITRE_1, ID_ARBITRE_2, ID_ARBITRE_3, ....... ID_ARBITRE_8) que te va a devolver el ID del Árbitro asociado al registro (independientemente de en que campo se encuentre). Puedes aplicar también COALESCE al resto de campos COALESCE(KM_1, KM_2, ....) NOTA: Técnicamente lo que hace la función COALESCE es devolver el primer valor no nulo de la lista de valores que se le pase por parámetro. Salut.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#3
|
||||
|
||||
Gracias Marc.
Igual no me exprese bien. Cita:
recibo 1 ID_ARBITRE_1 = 1 ID_ARBITRE_2 = 2 RECIBO 2 ID_ARBITRE_1 = 3 ID_ARBITRE_2 = 1 ID_ARBITRE_3 = 8 RECIBO 3 ID_ARBITRE_1 = 2 ID_ARBITRE_2 = 1 ID_ARBITRE_3 = 5 con lo que deberia tener un resumen algo así: Cabecera -> Resumen del arbitro ID =1 Recibo 1 + todos los campos con indice segun la posicion de ID_ARBITRE, es decir si esta en ID_ARBITRE_1, pues KM_1 , TOTAL_1 etc Recibo 2 + todos los campos Recibo 3 + todos los campos Resumen arbitro 2 Recibo 1 Recibo 3 Resumen Arbitro 5 Recibo 3 Resumen Arbitro 8 Recibo 2 No se si así se entiende mejor Yo pensaba en alguna consulta así como: SELECT * FROM ID_ARBITRE_1 WHERE ID_ARBITRE = 1 (este valor es el que le pasare por parametro), más SELECT * FROM ID_ARBITRE_2 WHERE ID_ARBITRE = 1 más SELECT * FROM ID_ARBITRE_3 WHERE ID_ARBITRE = 1 así hasta el ID_ARBITRE_8 Esto es lo que no se como implementar Saludos Josep Última edición por jafera fecha: 13-07-2012 a las 09:55:29. Razón: intentar aclarar más el razonamiento |
#4
|
||||
|
||||
A ver si avanzo algo he hecho esto y me salen los datos correctos:
Pero solo para una de las columnas de la tabla, ID_ARBIT1, puedo añadir más INNER o algo para que me busque en las otra siete columnas? Tengo que hacer un select para cada una?. Estoy más liado que la pata un romano. Gracias Josep |
#5
|
||||
|
||||
Hola de nuevo.
Realmente lo que necesito es unir las consultas siguientes en una de sola y pudiendo cambiar el where id_arbit1 por id_arbit2, id_arbit3, etc... hasta el id_arbit8 por el valor del arbitro seleccionado.(parametro)
Cada consulta por separado funciona perfectamente Saludos Josep |
#6
|
||||
|
||||
¿Por qué no creas un procedimiento almacenado y le pasas el parámetro?
|
#7
|
||||
|
||||
Cita:
|
#8
|
||||
|
||||
Hola Josep.
Cita:
Es decir :
Salut
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#9
|
||||
|
||||
Salut Marc.
Has dado en el clavo, esto es lo que yo no acababa de interpretar UNION, con esto me devuelve los registros tal y como los quiero Muchas gracias Josep Edito: Si pongo where ID_ARBIT1 =:ARBITRE, este parametro me puede servir para todas las demas clausulas where?, es decir ID_ARBIT2=:ARBITRE, etc. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Como agrupar datos por semanas | flystar | MySQL | 1 | 06-06-2008 03:52:32 |
Problema en agrupar datos en QuickReport | enecumene | Impresión | 15 | 07-11-2007 18:02:52 |
Agrupar o no según u parametro de una tabla auxiliar | apicito | SQL | 8 | 27-12-2004 23:44:41 |
Agrupar datos | castroruiz2001 | SQL | 3 | 04-07-2003 18:14:06 |
Como agrupar datos de una tabla | dabas | Impresión | 1 | 05-06-2003 16:20:47 |
|