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.