• Domingo 22 de Diciembre de 2024, 21:03

Autor Tema:  Concatenar Un Campo De Varias Filas  (Leído 16798 veces)

lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Concatenar Un Campo De Varias Filas
« en: Martes 6 de Marzo de 2007, 15:29 »
0
Tengo 3 tablas (Producto, Modelo, Precedencia)
Relacion
Un producto tienen una precedencia(osea de un solo pais)
Un producto puede pertenecer a varios modelos (Ej: CG 125, XL 250, TITAN 99, etc)
Mi problemas que cuando quiero hacer una busqueda por producto, me concatene su Nombre del producto, su Dependencia y sus modelos.

Tengo la siguiente consulta, pero no me funciona.
Código: Text
  1.  
  2. SELECT DISTINCT
  3.     Producto.idProducto,
  4.     Producto.Nombre + ' ' + Precedencia.Descripcion + ' ' + Modelo.Descripcion
  5.      AS Nombre
  6. FROM Producto INNER JOIN
  7.     Precedencia ON
  8.     Producto.idPrecedencia = Precedencia.idPrecedencia INNER JOIN
  9.     ModeloProducto ON
  10.     Producto.idProducto = ModeloProducto.idProducto INNER JOIN
  11.     Modelo ON
  12.     ModeloProducto.idModelo = Modelo.idModelo
  13. ORDER BY Producto.Nombre
  14.  
me lanza: Por cada modelo, una fila.

Espero y me entiendan.

BYTE.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Re: Concatenar Un Campo De Varias Filas
« Respuesta #1 en: Martes 6 de Marzo de 2007, 15:47 »
0
una de mi solucion seria hacer dos consultas.
En la primera solo pedir el nombre del producto y la procedencia, con eso solo tendria un registro(en el caso que el nombre solo coincida con un registro).
Ya en la segunda consulta dado el codigo del producto traerme todos sus modelos, y concatenarlos en mi lenguaje de programacion y adjuntarlo al nombre.

Pero me parece que es bastante tedioso y largo, quisiera algo mas sencillo.

BYTE.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

ElNapster

  • Moderador
  • ******
  • Mensajes: 727
    • Ver Perfil
Re: Concatenar Un Campo De Varias Filas
« Respuesta #2 en: Martes 6 de Marzo de 2007, 16:11 »
0
Que tal lencho.... de las tres tablas que campos  quieres que te salga en tu resultado  o  como seria el planteamiento de tu problema ?

poque no te entendi  :P
"Somos lo que imaginamos ser"
-- --------------------------------------------------------------
-ElNapster
-Designer / Developer Software
-GuaTemALa



lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Re: Concatenar Un Campo De Varias Filas
« Respuesta #3 en: Martes 6 de Marzo de 2007, 16:20 »
0
aqui estamos con problemas.
Veras.
En realidad son cuatro tablas: Producto, Procedencia, Modelo y ModeloProducto
Producto: idProducto, Nombre, idProcedencia, etc.
Procedencia: idProcedencia, Descripcion.
Modelo: idModelo, Descripcion.
ModeloProducto: idModelo, idProducto.

y quisiera que muestre el Nombre del producto + descripcion de su procedencia + descripciones de sus modelos.

Ej:
Culata Standar, BRAZIL, CG 125 / XL 250 / TITAN 99.

Que eso significa que el producto Culata Standar viene de Brazil y le hace a los modelos de motos CG 125,  XL 250 y  TITAN 99.

Gracias.

BYTE.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

ElNapster

  • Moderador
  • ******
  • Mensajes: 727
    • Ver Perfil
Re: Concatenar Un Campo De Varias Filas
« Respuesta #4 en: Martes 6 de Marzo de 2007, 17:01 »
0
Ahhhhhhhhhhhh lo que vos queres que dependiendo de los modelos que tenga se le vayan concatenando al mismo campo ???
o estoy mal ?

si el tiene 3 modelos le va a aparecer
Culata Standar, BRAZIL, CG 125 / XL 250 / TITAN 99 / TITAN 100
eso es lo que quieres ?
"Somos lo que imaginamos ser"
-- --------------------------------------------------------------
-ElNapster
-Designer / Developer Software
-GuaTemALa



A_LEX

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Concatenar Un Campo De Varias Filas
« Respuesta #5 en: Martes 6 de Marzo de 2007, 18:00 »
0
Hola que tal,

Tendrás unas tablas con datos que me puedan servir para realizar algunas pruebas con las consultas que neceistas?

Saludos.

lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Re: Concatenar Un Campo De Varias Filas
« Respuesta #6 en: Martes 6 de Marzo de 2007, 21:53 »
0
Citar
   Ahhhhhhhhhhhh lo que vos queres que dependiendo de los modelos que tenga se le vayan concatenando al mismo campo ???
No, no quiero que se concatenen en el mismo campo y se guarden en el mismo campo. Yo ya los tengo guardado, y lo que quiero es tenerlo asi en una consulta para poder mostrarlo en un grid.

Les adjunto el script.

BYTE.
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Re: Concatenar Un Campo De Varias Filas
« Respuesta #7 en: Miércoles 7 de Marzo de 2007, 23:03 »
0
hagamoslo mas sencillo, con el ejemplo de las tablas: Persona y Telefonos
Una persona tiene 0 o muchos telefonos.
Supongamos que tenemos 3 personas: Juan, Jose y Pedro
Los telefonos de Juan son: 7080000 y 3920000
Los telefonos de Jose son: 3921111, 70871111 y 70621111
Los telefonos de Pedro son:7082222

entonces yo quisiera hacer una consulta y guardarla en datatable, para asi mostrarlo en un DataGrid que tendria las siguientes columnas: id, NOmbre
lo cual me mostraria, luego de ejecutar la CONSULTA QUE QUIERO.

Código: Text
  1. id  NOmbre
  2. ______________________________________________________________________________
  3. 1  Juan, 7080000 / 3920000
  4. 2  Jose, 3921111 / 70871111 / 70621111
  5. 3  Pedro, 7082222
  6.  
  7.  
  8.  

BYTE.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Concatenar Un Campo De Varias Filas
« Respuesta #8 en: Jueves 8 de Marzo de 2007, 01:09 »
0
Hola viejo. La verdad es que no se como combinar en un campo valores de varios registros. La única solución que se me ocurre es formar el resultado por código pero  <_< . Ya verás !!
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Re: Concatenar Un Campo De Varias Filas
« Respuesta #9 en: Jueves 8 de Marzo de 2007, 14:38 »
0
Cita de: "Angel_K_ido"
Hola viejo. La verdad es que no se como combinar en un campo valores de varios registros. La única solución que se me ocurre es formar el resultado por código pero  <_< . Ya verás !!
si, yo tambien pense en eso, si no encuentro otra forma de hacerlo, lo hare nomas asi.

GRACIAS.

BYTE.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

trentia

  • Nuevo Miembro
  • *
  • Mensajes: 24
    • Ver Perfil
Re: Concatenar Un Campo De Varias Filas
« Respuesta #10 en: Lunes 23 de Abril de 2007, 17:58 »
0
Hay varias maneras de hacerlo, pero la más fácil puede ser create una función de usuario dentro del SQL.

En esta función le pasamos por ejemplo un identificador y mediante cursores vamos metiendo los valors que vengan en una variable de tipo string.

La función de usuario que devuelva este string y desde tu SQL realizas la llamada a la función.

Por ejemplo:

SELECT dbo.MiFuncionUsuario(12) ....

create function MiFuncionUsuario ...

Saludos

Javier Tirado
IT Consultor
TRENTIA Consulting
BUSINESS INTELLIGENCE
Javier Tirado
Trentia Consulting
TRENTIA
.]

lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Re: Concatenar Un Campo De Varias Filas
« Respuesta #11 en: Martes 24 de Abril de 2007, 02:07 »
0
eso lo tuve que resolver desde Visual Basic, con otra consulta, pero me gustaria poder hacerlo en SQL, pero todavia no he podido, seguire intentando.

BYTE.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

Soultaker

  • Miembro HIPER activo
  • ****
  • Mensajes: 972
  • Nacionalidad: pe
    • Ver Perfil
Re: Concatenar Un Campo De Varias Filas
« Respuesta #12 en: Miércoles 25 de Abril de 2007, 06:39 »
0
Eso tambien lo podrias hacer, creandote un STORE PROCEDURE, ahora no tengo instalado el SQL, dejame que lo instalo y lo tratare de hacer.

Saludos

 :comp:
http]
foros,programacion, c, c++, java,
linux, videojuegos, directX, .NET,
visual basic,robotica,microprocesadores

Para los nuevos usuarios de este Foro, por favor leerse esta discusión.
Cómo Hacer Preguntas De Forma Inteligente

Ojos que no ven... pisan caquita
Camarón que se duerme... muere electrocutado


<<< Harol Moreyra Bendezú >>>

lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Re: Concatenar Un Campo De Varias Filas
« Respuesta #13 en: Viernes 27 de Abril de 2007, 17:48 »
0
Me cree este procedure con un cursor dentro, que me soluciono el problema, ya era hora que pudiera hacerlo.
Código: Text
  1. CREATE PROCEDURE  Concatenar
  2.   @idProd int,
  3.   @salida varchar(100) output
  4. as
  5. Declare @Descripcion varchar(20)
  6.  
  7. Declare MiCursor Cursor For
  8. SELECT Modelo.Descripcion from Modelo, ModeloProducto where Modelo.idModelo = ModeloProducto.idModelo and ModeloProducto.idProducto = @idProd
  9. Open MiCursor
  10. Fetch Next From MiCursor
  11. Into @Descripcion
  12. if @@Fetch_status = 0
  13. begin
  14.   set @salida = ' '
  15.   Declare @contador int
  16.   set @contador = 1
  17.   While @@Fetch_status = 0
  18.   Begin
  19.     if @contador = 1
  20.       set @salida = @Descripcion
  21.     else
  22.       set @salida = @salida + ', ' + @Descripcion
  23.    
  24.     set @contador = @contador +1
  25.     Fetch Next From MiCursor
  26.     Into @Descripcion
  27.   end
  28. end
  29. else
  30. begin
  31.   Close MiCursor
  32.   Deallocate MiCursor
  33.   return(1)
  34. end
  35. Close MiCursor
  36. Deallocate MiCursor
  37. GO
  38.  
  39.  
Yo no sabia esta parte de SQL (lo de transact, cursores, etc), mas bien y estoy aprendiendo  :D  :D  :D

BYTE.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"