FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Concatenacion de caracteres de distintos registros
Supongamos que esta es la tabla (creada con el ibexpert)
Si, aparentemente es medio particular lo que estoy necesitando. Intentaré darles un ejemplo más visual. Si esta fuera mi tabla: CODIGOPAIS EMPRESA CATEGORIA 01 Cyutan S.A. NL 01 Ayel S.R.L. TT 01 Cocuyo S.R.L. PP 01 Entre Rios S.A. NL 01 Conteniente NL 01 AustralTur TT 03 Apolos S.A. PP 03 Contruye S.R.L. PP 03 Pampeano S.A. NL 03 Cruz del Sur TT 05 El Cruceño NL Lo que quiero lograr de resultado de mi consulta SQL es: CODIGOPAIS CATEGORIAS 01 NL - TT - PP - NL - NL - TT 03 PP - PP - NL - TT 05 NL Queda claro que el group es por CODIGOPAIS. ¿Pero como logro que todas las categorias me queden en un campo? Espero me haya sabido explicar, y que conozcan una manera (si la hay) yo ya me rebane los cesos con todas las ayudas y libros de los que dispongo aqui abajo (Tierra del Fuego , Argentina). y no encontre nada. Gracias por la ayuda.... |
#2
|
||||
|
||||
Cita:
De cualquier manera, como dices, es claro que la agrupación debe hacerse por el campo CODIGOPAIS y sobre cada grupo debes aplicar una función. Este tipo de funciones son las llamadas funciones agregadas (aggregate functions), así que el primer paso sería consultar la documentación del motor de datos que uses para ver de cuáles funciones agregadas dispone. Esto es justamente lo que acabo de hacer; no con Interbase pues no lo uso, sino con MySql, y en la lista de funciones agregadas encontré GROUP_CONCAT. De aquí a construir la sentencia SQL es un paso:
Así que consulta la documentación a ver si hay alguna función agregada similar. // Saludos |
#3
|
||||
|
||||
la verdad es que no conozco que exista algo tan sencillo para concatenar (puede llegar a existir alguna UDF).
El operador de concatenación es el || Esta operación es un poco mas compleja dado que deberias crearte un procedimiento almacenado (SP), e ir generando el capo que queres con un siclo for. Bastante más complejo. no conozco una forma simple, no significa que no exista, busca si hay alguna UDF que lo haga mas sencillo, sino ... tampoco es para morirse, se puede crear.
__________________
[Crandel] |
#4
|
||||
|
||||
Cita:
// Saludos |
#5
|
||||
|
||||
Cita:
En MySQL tambien es una función agregada, la unica diferencia es que ya la programo alguien y la encontraste y yo no. mientras tanto MySql 1/2 - Firebird 0
__________________
[Crandel] |
#6
|
||||
|
||||
Cita:
MySql 3/4 - Firebird 0 EDITO: Quizá es que hay una confusión. Por "agregada" no me refiero a una función que se agrega, tal como una UDF, sino a las funciones así llamadas que se aplican sobre grupos. // Saludos |
#7
|
||||
|
||||
Retomando el tema luego de esta pequeña disgresión, a mi me interesaría conocer un poco más del contexto de una consulta SQL como la deseada.
Insisto que me suena rara, que si existe una necesidad de algo así quizá se deba a un esquema de tablas algo "raro". Aunque el campo obtenido es a fin de cuentas un campo calculado, no deja de ser un campo cuyos valores son listas, hecho que va contra la primera forma normal ¿no es así? // Saludos |
#8
|
||||
|
||||
Hola.
Bueno, el tema que plantea casandra me resulta familiar. Efectivamente como indica Román no parece que sea un modelo de datos demasiado ortodoxo cuando se intenta hacer una consulta de este tipo. Hay que verlo desde otro punto de vista, es decir, posiblemente estes intentando explicarnos como muestro el resultado de la consulta al usuario final. Yo tuve (y tengo ) el mismo problema. El responsable de mi departamento quiere una presentacion de datos 'al reves' similar al ejemplo planteado. Hay dos formas de solucionar el problema: 1.- Ejecutas la consulta 'como dios manda' y despues le das la vuelta por codigo para presentarla en tu interface 2.- Utilizas componentes especificos para ello (xQuery, que es el que en su dia utilice) que realizan el trabajo sucio de coger los resultados de una consulta y darles la vuelta. Saludos |
#9
|
|||
|
|||
Dejenme comprar este pleito
o
Cita:
Firebird 1 - MySql 0 En estos casos recomiento hacer el formato de los datos para presentarlos directamente en el front-end. |
#10
|
||||
|
||||
Cita:
Se me hace que roman 1 - Migpal 0 // Saludos |
#11
|
|||
|
|||
Cita:
MySql=0 Firebird=1/2 Roman=Fuera de Concurso |
|
|
|