FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Concatenar varios registros
Hola gente del foro, tal como dice el titulo necesito concatenar varios registros en uno.
Utilizo Firebird 2.0. Tengo 2 tablas, compras (noc:integer, area: string, proveedor:string) y detcompras(noc:integer, ncorr:integer, descripcion: string) Ocurre que por cada registro de la tabla compras existe al menos 1 en la tabla detcompras. Necesito hacer una consulta tal que me arroje todos los registros de la tabla compras (noc, area y proveedor), y adicionalmente en un solo campo todos las descripciones de la tabla detcompras. Por ejemplo. tabla compra: registro 1: noc, area, proveedor --> 4, PROYECTO, JUAN registro 2: noc, area, proveedor --> 5, EXISTENCIA, PEDRO tabla detcompras: registro 1: noc, ncorr, descripcion --> 4, 1, mas registro 1: noc, ncorr, descripcion --> 5, 1, prueba registro 2: noc, ncorr, descripcion --> 5, 2, clavo registro 3: noc, ncorr, descripcion --> 5, 3, cosas Lo que necesito es que mi consulta me arroje lo siguiente: registro 1: noc, area, proveedor, detalle --> 4, PROYECTO, JUAN, mas registro 2: noc, area, proveedor, detalle --> 5, EXISTENCIA, PEDRO, prueba clavo cosas Espero se entienda. Saludos |
#2
|
|||
|
|||
Hola,
primero de todo decirte que no se si en Firebird se puede hacer o no, pero te comento como lo haría yo con SQL Server. Crearía una tabla temporal en ejecución, en la que con un cursor, iria recorriendo tu tabla Detcompras e iria concatenando los strings de cada producto. Es decir en esta tabla guardaria tu campo noc y el string concatenado. Para concatenarlo iria haciendo updates en esta tabla temporal. Luego solo te quedaria hacer la select normal, haciendo join contra esta tabla temporal para tener los datos como los quieres. Como te comento, esto en SQL Server se puede hacer, me imagino que con Firebird tambien. Seguro que hay alguna implementación más eficiente, pero ahora no se me ocurre! Espero haberte ayudado o al menos haberte dado una pista de para donde tirar |
#3
|
||||
|
||||
No se si con una consulta sólo vas a poder hacerlo. Me da la impresión de que va a necesitar un Stored para hacer el recorrido y guardar las descripciones en el campo.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#4
|
|||
|
|||
Podria ser asi:
NOTA: Este codigo no esta probado. |
#5
|
|||
|
|||
Creo que esto lo tengo que resolver con un proceso almacenado, donde le defino una variable de entrada com integer igual al numero de orden de compra. Algo así.
Por ejmplo en la tabla detcompras tengo 23 registros de la ordenn numero 5, al correr este procedimiento, me repite la descripción del ultimo registro por 3 veces, el primero y el segundo nada. Porque podrá ser esto? Cual podría ser la forma correcta de hacer este procedimiento? Espero me puedan ayudar. Gracias Última edición por Neftali [Germán.Estévez] fecha: 01-07-2010 a las 18:27:25. Razón: Correccion de etiquetas |
#6
|
|||
|
|||
Al parecer no viste el codigo que te escribi mas arriba.
Saludos |
#7
|
|||
|
|||
No me di cuenta del nuevo post.
Gracias, funciono perfecto. Una sola cosa, es un detalle, pero si se pudiese solucionar ideal. Lo que me arroja el resultado del procedimiento en el parametro de salida "detalle", se tiene un un separador " ", entre las distintas cadenas de los registros, el problema es que este separador también me lo incluye antes del primer registro. Gracias, por todo. Saludos |
#8
|
|||
|
|||
Podrias incorporar una verificacion del largo de la variable DETALLE...
Saludos |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Restar, Sumar varios registros a la vez | Lenny | Varios | 2 | 28-05-2010 20:38:30 |
Borrar varios registros en un Dbrepeater | David82 | PHP | 0 | 09-09-2008 13:40:37 |
Impresión de varios registros con QREPORT | bosamel | Impresión | 3 | 19-01-2005 14:49:51 |
Varios registros en 2 Bands Detail y Summary | Franklim | Impresión | 1 | 29-04-2004 21:21:12 |
|