Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/12/2009, 12:52
nestoroc
 
Fecha de Ingreso: marzo-2009
Mensajes: 20
Antigüedad: 15 años, 1 mes
Puntos: 0
Ayuda con consulta compleja

Disculpen que el título del mensaje sea tan poco descriptivo, pero la verdad para mi esta es una consulta compleja.

Tengo varias tablas:

Cita:
publicaciones (id, titulo, nota, genero_id, usuario_id, edicion_id, …) hay mas campos pero para ejemplificar sirve.

categorías (id, id_padre, nombre, izq, der, …) hay mas campos pero para ejemplificar sirve.

edicion (id, numero, …) hay mas campos pero para ejemplificar sirve.

relaciones (id_pub, id_cat, tipo, …) hay mas campos pero para ejemplificar sirve.

usuarios (id, nombre, correo, …) hay mas campos pero para ejemplificar sirve.
Las tablas se relación más o menos de la siguiente manera:

Relación 1 a 1
Una noticia solo se asocia a una edición
Una noticia solo se asocia a un usuario
Una noticia solo se asocia a una categoría de forma directa *

Relación 1 a muchas
Una noticia solo se asocia a varias categorías * usando la tabla relaciones para eso.

* La tabla categorías es anidada del tipo árbol que toma en cuenta tanto los id de los padres pero ordena sus hijos según las celdas izquierda y derecha. Así tengo varias categorías agrupadas. Así tengo una categoría padre genero periodísticos que tienen de hijos (noticia, crónica, reseña, articulo, columna y …) tengo otra categoría de secciones por país (Brasil, Colombia, México, Venezuela …) Así puedo asociar una publicación a un único genero periodístico, y usando la tabla relaciones puedo asociar una noticias a varios países. Espero se entienda.

El método de jerarquización usado se explica en la siguiente url en ingles de aquí fue que saque la idea para la estructura de la tabla categorias y por eso la relaciono de diferentes formas con otras tablas: articles.sitepoint.com/article/hierarchical-data-database/2


Tengo la siguiente consulta que me entrega un listado de las publicaciones, relacionandolas perfectamente a los generos, usuarios y ediciones. restingiendo la salida a determina edición.

Código MySQL:
Ver original
  1. p.id AS id,
  2. p.titulo AS tiutlo,
  3. p.nota AS nota,
  4. p.genero_id AS generoid,
  5. p.usuario_id AS usuarioid,
  6. p.edicion_id AS edicionid,
  7. u.id AS uid,
  8. u.nombre AS autor,
  9. u.correo AS correo,
  10. cat.id AS catid,
  11. cat.nombre AS catnombre,
  12. e.id AS edid,
  13. e.numero AS edicion  
  14. FROM publicaciones p INNER JOIN usuarios u ON u.id = p.usuario_id
  15. INNER JOIN categorias cat ON cat.id = p.genero_id
  16. INNER JOIN ediciones e ON e.id = p.edicion_id
  17. WHERE e.numero = ".$edicion."

Ahora lo que yo quisiera es realizar otra consulta donde me mostrara la misma información pero con la restricción adicional de país. Recuerdo aquí que una misma publicación puede asociarse a varios países.

Espero quede clara la información mostrada y la pregunta. Agradezco de antemano su tiempo y conocimiento en mi ayuda.

Última edición por nestoroc; 02/12/2009 a las 13:18