Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Unir campos de tres registros distintos en uno solo

Estas en el tema de Unir campos de tres registros distintos en uno solo en el foro de Bases de Datos General en Foros del Web. Hola a todos, tengo el siguiente problema Tengo 3 tablas en una BD en MSSQL Server 2000 (Autor, Libro y Autor x Libro) para q ...
  #1 (permalink)  
Antiguo 07/11/2004, 23:56
 
Fecha de Ingreso: octubre-2003
Ubicación: Huancayo - Peru
Mensajes: 32
Antigüedad: 20 años, 6 meses
Puntos: 0
Unir campos de tres registros distintos en uno solo

Hola a todos, tengo el siguiente problema

Tengo 3 tablas en una BD en MSSQL Server 2000 (Autor, Libro y Autor x Libro) para q me permita mas de un autor por cada Libro.
y al hacer la consulta me sale de esta manera tres registros distintos del mismo libro por cada autor q tenga.

Cod Titulo
|codigo | Titulo del Libro | Autor
---------------------------------------------------------
LB00001 ADMINISTRACION Y DIRECCION |Ever Rani
LB00002 ADMINISTRACION |Diego Loayza
LB00003 ADMINISTRACION DE RRHH |Jose Montenegro
LB00003 ADMINISTRACION DE RRHH |Juan Morales
LB00003 ADMINISTRACION DE RRHH |Ulises Montoya
LB00004 ..................................... | ...........
-----------------------------------------------------------

y necesito q me muestre solo un registro por cada Libro y que los autores aprezcan, todos en el mismo campo, o que aunquesea salga solo el primero.
de esta manera...

|codigo | Titulo del Libro | Autor
---------------------------------------------------------
LB00001 ADMINISTRACION Y DIRECCION |Ever Rani
LB00002 ADMINISTRACION |Diego Loayza
LB00003 ADMINISTRACION DE RRHH |Jose Montenegro....
LB00004 .......................... |..................
-----------------------------------------------------------

He intentado con varias cosas pero el AVG y el ADD solo funciona con números o datos enteros o númericos, no he visto ningun método que me una los registros de los tres autores en uno solo.

por favor si alguien puede ayudarme le agradeceré mucho..
Gracias por anticipado...
__________________
La fidelidad es a la vida de las emociones lo que la coherencia a la vida del intelecto. ("El Retrato de Dorian Gray" - Oscar Wilde)
  #2 (permalink)  
Antiguo 09/11/2004, 00:46
 
Fecha de Ingreso: octubre-2004
Mensajes: 258
Antigüedad: 19 años, 6 meses
Puntos: 1
USA
GROUP BY CODIGO,TITULO DEL LIBRO,AUTOR

mandanos la consulta cualquier cosa, asi la vemos!
__________________
Salute !!!
RollBack
  #3 (permalink)  
Antiguo 09/11/2004, 02:31
 
Fecha de Ingreso: octubre-2003
Ubicación: Huancayo - Peru
Mensajes: 32
Antigüedad: 20 años, 6 meses
Puntos: 0
Exclamación Aver aver.....

Gracias por el apoyo pero no funciono, he estado probando de esta manera:


SELECT MLibros.cIdLibro as Cod, MLibros.cTitulo as Titulo, MAutor.cNombres
FROM MLibros INNER JOIN
AAutorLibro ON MLibros.cIdLibro = AAutorLibro.cIdLibro INNER JOIN
MAutor ON AAutorLibro.cIdAutor = MAutor.cIdAutor
group by MLibros.cIdLibro, MLibros.cTitulo, MAutor.cNombres


Cod |Titulo |cNombres
---------------------------------------------------------
LB00001 |ADMINISTRACION Y DIRECCION |Ever
LB00002 |ADMINISTRACION DE RRHH |Diego
LB00003 |ADMINISTRACION DE RRHH |Jose
LB00003 |ADMINISTRACION DE RRHH |Juan
LB00003 |ADMINISTRACION DE RRHH |Ulises
LB00004 |INTRODUCCION A LA ADMINISTRACION |Carlos
LB00004 INTRODUCCION A LA ADMINISTRACION |Fernando
LB00004 INTRODUCCION A LA ADMINISTRACION |Silvia
--------------------------------------------------------------


y he seguido buscando funciones de aggregación, a ver si encontraba algo algo de concatenacion de cadenas pero aún no lo encuentro, ni en el tutorial en ingles ni en castellano (bien escondida esta esa nota).

Lo otro que estoy utilizando por ahora pero no me parece nada informativo es que me cuente el número de autores (count) de esta manera :

SELECT MLibros.cIdLibro as Cod, MLibros.cTitulo as Titulo,
count(MAutor.cNombres) FROM MLibros INNER JOIN
AAutorLibro ON MLibros.cIdLibro = AAutorLibro.cIdLibro INNER JOIN
MAutor ON AAutorLibro.cIdAutor = MAutor.cIdAutor
group by MLibros.cIdLibro, MLibros.cTitulo


y tengo este resultado :

Cod |Titulo |
---------------------------------------------------
LB00001 |ADMINISTRACION Y DIRECCION |1
LB00002 |ADMINISTRACION DE RRHH |1
LB00003 |ADMINISTRACION DE RRHH |3
LB00004 |INTRODUCCION A LA ADMINISTRACION |3

pero aun tengo ese problema,
__________________
La fidelidad es a la vida de las emociones lo que la coherencia a la vida del intelecto. ("El Retrato de Dorian Gray" - Oscar Wilde)
  #4 (permalink)  
Antiguo 09/11/2004, 02:56
Avatar de Vice  
Fecha de Ingreso: agosto-2003
Mensajes: 613
Antigüedad: 20 años, 8 meses
Puntos: 2
Si lo único que quieres son los diferentes libros, no cruces las dos tablas, la de libros con la de autores, no tiene mucho sentido.
Código:
select cIdLibro, cTitulo from Mlibros
Este select te mostrará todos los libros que tengas. Fíjate que código distinto, supone libro distinto. Si lo que quieres son sólo los Títulos diferentes, pues un pequeño cambio
Código:
select distinct cTitulo from Mlibros
y ya está.

Lo otro que pides, de que en una única fila aparezca el título y todos los posibles autores, no se puede hacer. La única forma de presentarlo así es por programación.

Un saludo.

Última edición por Vice; 09/11/2004 a las 02:59
  #5 (permalink)  
Antiguo 09/11/2004, 05:07
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 21 años, 8 meses
Puntos: 16
mmm y si haces tres funciones que te ttraigan el valor?

y luego haces un select invocando y concatenando las tres funciones ?

claroq ue todo eso lo deberias meter en un PA.



eso se me ocurre a mi.
  #6 (permalink)  
Antiguo 10/11/2004, 09:44
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 21 años, 8 meses
Puntos: 16
y asi no resulta

select nombre + " " + apellido as nombre_completo from tabla


  #7 (permalink)  
Antiguo 10/11/2004, 12:17
Avatar de phinojosa  
Fecha de Ingreso: agosto-2004
Ubicación: Guayaquil-Ecuador
Mensajes: 145
Antigüedad: 19 años, 8 meses
Puntos: 2
Yo creo que si quieres los libros. Pues obviamente solo hago un select de los libros. Para que hacer JOIN con las otras tablas???

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:31.