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

Consulta a 3 tablas

Estas en el tema de Consulta a 3 tablas en el foro de Mysql en Foros del Web. Buenas, igual es que estoy un poco espeso con eso del partido de ayer de España, pero no se si puedo conseguir lo que quiero ...
  #1 (permalink)  
Antiguo 15/06/2012, 03:48
 
Fecha de Ingreso: junio-2007
Ubicación: Cádiz
Mensajes: 369
Antigüedad: 16 años, 10 meses
Puntos: 7
Consulta a 3 tablas

Buenas, igual es que estoy un poco espeso con eso del partido de ayer de España, pero no se si puedo conseguir lo que quiero con una sola consulta o es necesario, por cada fila resultante hacer una nueva consulta....


Tengo 3 tablas:

Articulos: Id, titulo, entradilla, texto
Autores: Id, nombre, apellidos
Autores_articulo: Id_articulo, Id_autor

Necesito una consulta donde al clicar sobre un autor en concreto, me devuelva todos los articulos de ese autor, incluyendo en el resultado, todos los autores que haya para ese mismo articulo.

Esta es la consulta que hago:

SELECT autores_articulo.Id_articulo, autores.Nombre, autores.Apellidos, autores.Id, articulos.titulo
FROM autores INNER JOIN
autores_articulo ON autores.Id = autores_articulo.Id_autor INNER JOIN
articulos ON articulos.ind = autores_articulo.Id_articulo
ORDER BY autores_articulo.Id_articulo DESC

Que me devuelve lo que busco, pero necesito agruparlo por Articulos, para que no me duplique estos y poder ir registro por registro...

Mostrando la info:

titulo articulo
autor1, autor2

titulo articulo
autor1

titulo articulo
autor1, autor2, autor3

No se si me he explicado.... ¿Necesito hacer dos consultas para que por cada articulo me busque los colaboradores o no?

Gracias de antemano!!

Saludos!!
  #2 (permalink)  
Antiguo 15/06/2012, 03:55
 
Fecha de Ingreso: junio-2007
Ubicación: Cádiz
Mensajes: 369
Antigüedad: 16 años, 10 meses
Puntos: 7
Respuesta: Consulta a 3 tablas

Si no me equivoco, estoy en el mismo problema que el compañero que planteaba este tema no?

http://www.forosdelweb.com/f86/acced...istros-998620/
  #3 (permalink)  
Antiguo 15/06/2012, 05:52
 
Fecha de Ingreso: junio-2007
Ubicación: Cádiz
Mensajes: 369
Antigüedad: 16 años, 10 meses
Puntos: 7
Respuesta: Consulta a 3 tablas

Buenas, en principio, el caso general ya lo he solucionado... tal como recomendaban en el post que enlazo en el mensaje anterior, me muestra filas con datos duplicados porque los datos del articulo en este caso, van a ser los mismos...


Pero si selecciono un autor en concreto y muestro los articulo del mismo... ¿Cómo podría mostrar a la vez al resto de autores para ese articulo desde la misma consulta? ¿Creo que es imposible no?
  #4 (permalink)  
Antiguo 15/06/2012, 06:51
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Consulta a 3 tablas

Cita:
¿Cómo podría mostrar a la vez al resto de autores para ese articulo desde la misma consulta? ¿Creo que es imposible no?
Solamente si la consulta abarcara a todos los autores, al detalle, pero el resultado podría ser demasiado grande para ser eficiente.
Te conviene en todo caso hacer al revés: Primero listar los autores y retenerlos en memoria, y luego hacer la consulta de detalle, cada vez que se selecciona uno.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 16/06/2012, 04:41
 
Fecha de Ingreso: junio-2007
Ubicación: Cádiz
Mensajes: 369
Antigüedad: 16 años, 10 meses
Puntos: 7
Respuesta: Consulta a 3 tablas

Gracias por responder... finalmente, cuando clica en un autor, lo he "solucionado" mostrando sólo el titulo del artículo y no los autores porque se muestran los del autor clicado, una vez entras en el artículo ya si te muestra quiénes son los autores....


Aún poniendo este parche, me surge la duda de la eficiencia de un sistema desarrollado utilizando POO, donde a una colección de objetos Artículo se le pide que muestre todos sus autores, entiendo, que debería ser a través de consultas por contra la tabla de aritculos_autor por cada artículo mostrado...

¿Sería esta forma de trabajar eficiente?


Saludos
  #6 (permalink)  
Antiguo 16/06/2012, 05:48
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Consulta a 3 tablas

¿Por qué no?
No te olvides que los DBMS han sido diseñado para responder enormes cantidades de consultas/hora. Y que la mayor parte de las aplicaciones comerciales, bancarias, administrativas, etc., disparan constantemente consultas, y las mismas se responden aún en bases remotas, como si los servidores estuviesen en local.
Uno de los secretos es siempre este: No pidas a la base datos que no sean realmente necesarios. Reduce la cantidad de paquetes de datos que tengan que transferirse, y mejorarás la performance.
Eso se hace entre otras cosas, no usando el "SELECT *..." más que cuando lo usas.
Optimiza las consultas, y optimizarás el sistema.
El resto es tema fuera de esta área y sería mejor buscar la opinión de los foros de programación.

Lo que no debes olvidar es que la base de datos no hace todo. Y que no se le debe encargar cosas que los lenguajes de programación hacen mejor.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: join, select, tabla, tablas
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:23.