Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/04/2013, 21:07
PYTUFYN
 
Fecha de Ingreso: junio-2003
Mensajes: 104
Antigüedad: 20 años, 10 meses
Puntos: 0
Consultas múltiples a múltiples tablas ¿Cómo lo hago?

Hola a tod@s.

Esto es un poco complicado, a ver si logro explicarme.

Tengo varias tablas (tengo más, esto solo son unos pocos ejemplos), algunas relacionadas por un número id, de este estilo:

Código MySQL:
Ver original
  1. tabla peliculas
  2.  
  3. id_pelicula     url_pelicula      titulo_pelicula
  4. 5               el-padrino        El Padrino
  5.  
  6. ----------------------------
  7.  
  8. tabla directores
  9.  
  10. id_director    id_director_pelicula     nombre_director            pais_director
  11. 3              5                        Francis Ford Coppola       Estados Unidos
  12.  
  13. ----------------------------
  14.  
  15. tabla fichas
  16.  
  17. id_ficha      id_ficha_pelicula     sinopsis_ficha       genero_ficha        subgenero_ficha
  18. 1             5                     sinopsis...          2                   4
  19.  
  20. ----------------------------
  21.  
  22. tabla generos
  23.  
  24. id_genero               nombre_genero       url_genero
  25. 2                       Drama               drama
  26. 4                       Mafia               mafia
  27.  
  28. ----------------------------
  29.  
  30. tabla videos
  31.  
  32. id_video    id_video_pelicula         titulo_video               url_video
  33. 1           5                         Trailer de el Padrino      trailer-padrino
  34. 2           5                         Final de El Padrino        final-padrino
  35. 3           5                         Teaser de El Padrino       teaser-padrino

Me gustaría obtener un resultado de este estilo:

Cita:
ID: 5
Película: El Padrino
Director: Francis Ford Coppola (Estados Unidos)
Sinopsis: sinopsis...
Géneros: Drama, Mafia
Vídeos (3)
- Trailer de el Padrino
- Final de El Padrino
- Teaser de El Padrino
Los datos los saco a partir de la URL con $_GET['url_pelicula'], es decir...

¿Cómo podría hacerlo todo en una misma consulta sin tener que hacer multitud de consultas diferentes por página?

Código MySQL:
Ver original
  1. SELECT * FROM peliculas, fichas WHERE fichas.id_ficha_pelicula = peliculas.id_pelicula AND peliculas.url_pelicula = '$url_pelicula' LIMIT 1

De aquí saco $id_pelicula, $genero_pelicula, $subgenero_pelicula, etc... que utilizo en las siguientes consultas

Código MySQL:
Ver original
  1. SELECT nombre_director, pais_director FROM directores WHERE id_director_pelicula = '$id_pelicula' LIMIT 1
  2.  
  3. SELECT nombre_genero, url_genero FROM generos WHERE id_genero = '$genero_ficha' LIMIT 1
  4.  
  5. SELECT nombre_genero, url_genero FROM generos WHERE id_genero = '$subgenero_ficha' LIMIT 1
  6.  
  7. SELECT COUNT(id_video) FROM videos WHERE id_video_pelicula ='$id_pelicula'
  8.  
  9. SELECT titulo_video, url_video FROM videos WHERE id_video_pelicula ='$id_pelicula'

etc... Como veis para mostrar unos pocos datos hago mil consultas, toda una locura

¿Se podría hacer como digo todo en una consulta? ¿Cuál sería la más eficiente?

Gracias de antemano al que se haya leído todo este lío. Espero haberme explicado bien. Quizás el problema es la estructura de la base de datos, que es un caos ilógico XD

Cualquier ayuda es apreciada.

¡Un saludo!

Última edición por PYTUFYN; 24/04/2013 a las 21:58