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

Consulta atipica

Estas en el tema de Consulta atipica en el foro de Mysql en Foros del Web. tengo una tabla documentos y otra autores (1-n) necesito mostrarlo en pantalla de la siguiente forma: titulo: ssssssss Autores: Perez, jose; Rodriguez, Pedrito; etc. si ...
  #1 (permalink)  
Antiguo 24/06/2008, 10:34
Avatar de moron  
Fecha de Ingreso: mayo-2004
Mensajes: 972
Antigüedad: 20 años
Puntos: 2
Consulta atipica

tengo una tabla documentos y otra autores (1-n)

necesito mostrarlo en pantalla de la siguiente forma:

titulo: ssssssss
Autores: Perez, jose; Rodriguez, Pedrito; etc.

si hago un join, me va a quedar de la siguiente forma:

ssssss | Perez, josé
ssssss | Rodriguez Pedrito
ssssss | etc.

de que manera puedo hacer que no sea redundante el titulo?

saludos y gracias desde ya.
  #2 (permalink)  
Antiguo 24/06/2008, 10:55
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Consulta atipica

Para esas cosas MySQL tiene la función GROUP_CONCAT. Pongamos que tienes una tabla de titulos, otra de autores, y una tercera de autortitulo.

SELECT t.titulo, GROUP_CONCAT( a.autor SEPARATOR '; ' ) AS autores FROM titulos t INNER JOIN autortitulo at ON t.idtitulo = at.refidtitulo INNER JOIN autores a ON at.refidautor = a.idautor GROUP BY t.idtitulo ORDER BY t.titulo

Por supuesto, eso puede hacerse fácilmente con programación, usando arrays, etc., y no haría falta, claro el uso de group_concat, pero ahora has pedido hacerlo directamente desde la base, y yo creo que este es el mejor modo de hacerlo.

Última edición por jurena; 24/06/2008 a las 11:19
  #3 (permalink)  
Antiguo 24/06/2008, 11:37
Avatar de moron  
Fecha de Ingreso: mayo-2004
Mensajes: 972
Antigüedad: 20 años
Puntos: 2
Respuesta: Consulta atipica

Es exactamente lo que necesito. Muchas gracais.
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 17:20.