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

Consulta Noticias / categorias

Estas en el tema de Consulta Noticias / categorias en el foro de Mysql en Foros del Web. Perdonen si el planteamiento es largo –espero no confuso – pero quiero ser lo más detallado posible. Igualmente disculpen si no es el foro apropiado ...
  #1 (permalink)  
Antiguo 08/04/2009, 00:51
 
Fecha de Ingreso: marzo-2009
Mensajes: 20
Antigüedad: 15 años, 1 mes
Puntos: 0
Consulta Noticias / categorias

Perdonen si el planteamiento es largo –espero no confuso – pero quiero ser lo más detallado posible. Igualmente disculpen si no es el foro apropiado para la consulta.

Tengo tres tablas:

noticias (id, titulo, nota, fecha) este es un ejemplo, el real tiene más campos

Ejemplo de datos: tabla noticias
(1, titulo1, noticia1, fecha)
(2, titulo2, noticia2, fecha)
(3, titulo3, noticia3, fecha)

categorías (id, nombre, descripcion) igual hay mas campos pero para ejemplificar sirve
Ejemplo de datos:
(1, categoria1, esta es la categoría 1)
(2, categoria2, esta es la categoría 2)
(3, categoria3, esta es la categoría 3)
(4, categoria4, esta es la categoría 4)
(5, categoria5, esta es la categoría 5)

cat_not (id_noticias, id_categorias) la idea es relacionar las noticias con las categorías. Y que una noticia pueda pertenecer a varias categorías al tiempo.
Ejemplo de datos:
(1, 3)
(1, 4)
(1, 5)
(2, 1)
(2, 5)
(2, 1)
(3, 4)
(3, 5)

Como se puede ver en este ejemplo la categoría 5 se relaciona con las noticias 1, 2 ,3 y la nota 1 pertenece a las categorías 3, 4 y 5

Estoy realizando un SELECT usando INNER JOIN que me va muy bien cuando quiero mostrar determinado número de noticias por categorías.

Lo que quiero y no he logrado es que al mostrar una noticia también me diga a cuales categorías pertenece – no sólo una.

Mi consulta SQL es la siguiente:

Código:
SELECT n.id AS id, n.titulo AS titulo , c.nombre AS categoria FROM noticias n INNER JOIN cat_not cn ON cn.id_noticias = n.id INNER JOIN categorias c ON c.id = cn.id_categorias WHERE cn.id_categorias = 5 ORDER BY n.fecha DESC LIMIT 0,2
Mis preguntas serían ¿se puede hacer lo que quiero con una sola consulta o debo hacer otra consulta más? ¿se puede hacer lo que quiero con SQL o debo usar –en mi caso – PHP?

No esta de más decir que estoy dando mis primeros pasos, así que cualquier orientación es para mi valiosa.

De antemano muchas gracias a quien pueda ayudarme.
  #2 (permalink)  
Antiguo 08/04/2009, 11:38
 
Fecha de Ingreso: diciembre-2008
Mensajes: 190
Antigüedad: 15 años, 4 meses
Puntos: 6
Respuesta: Consulta Noticias / categorias

creo, no probe
Código:
SELECT n.*, GROUP_CONCAT(c.nombre SEPARATOR ',' ) as nombre_cat
FROM noticias n
LEFT JOIN cat_not cn ON (n.id = cn.id_noticias) 
LEFT JOIN categoria c ON (c.id = cn.id_categorias)
WHERE n.id = "ID DE NOTICIA BUSCADA"
GROUP BY n.id
ORDER BY n.fecha DESC LIMIT 0,2
ah te muestra las categorias separadas por la coma
  #3 (permalink)  
Antiguo 08/04/2009, 16:13
 
Fecha de Ingreso: marzo-2009
Mensajes: 20
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Consulta Noticias / categorias

Gracias turfeano, tu consulta hace justo lo que pedí, voy a estudiarla y adaptarla a mis necesidades.
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 03:35.