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 10: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?
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#7
|
||||
|
||||
Curioso que nadie haya dicho que esa tabla no tiene ni pies ni cabeza.
No hay razón para tener 8 campos así. Tampoco para almacenar los demás valores de esa forma. Deben ser varias tablas.
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#8
|
||||
|
||||
Gracias por las respuestas.
Lepe: No entiendo porque me dices esto, tal vez la estructura no sea la correcta, pero hace la funcion que yo quiero. Todos estos datos proceden de hacer un reparto según un importe cobrado y el número de arbitros que han intervenido. Yo creo un recibo con el importe a cobrar, el numero de arbitros que actuan, el kilometraje de cada uno y empiezo a hacer el reparto que guardo en esta tabla, luego estos datos me sirven para imprimir el importe a cobrar por cada individuo sin errores. Si tienes cualquier idea para mejorarla, pues encantado de la vida ya que como he comentado varias veces en el foro, yo no soy informatico de oficio, lo soy de oido como muchos músicos, que no saben leer una partitura pero encambio hacen sonar los instrumentos que te mueres. Casimiro: Podrías intentar encenderme alguna luz para ver si veo el final del tunel? Es que el tema de los procedimeinetos está un poco oxidado, se que son potentes pero los he usado muy poco. Saludos |
#9
|
||||
|
||||
Cita:
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#10
|
||||
|
||||
Hola Josep.
Cita:
Es decir :
Salut
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#11
|
||||
|
||||
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 04:52:32 |
Problema en agrupar datos en QuickReport | enecumene | Impresión | 15 | 07-11-2007 19:02:52 |
Agrupar o no según u parametro de una tabla auxiliar | apicito | SQL | 8 | 28-12-2004 00:44:41 |
Agrupar datos | castroruiz2001 | SQL | 3 | 04-07-2003 19:14:06 |
Como agrupar datos de una tabla | dabas | Impresión | 1 | 05-06-2003 17:20:47 |
|