Tengo un problema con la implementación de un módulo donde uno project
puede pertenecer a múltiples categories
. Ejemplo: proyecto "Programador PHP" pertenece a las categorías: Programación, PHP.MySQL LEFT JOIN duplica los resultados
Suponiendo que la siguiente consulta (seleccionan los proyectos que pertenecen a categorías 1,3,11):
SELECT projects.* FROM projects
LEFT JOIN pojects_category on projects.id = pojects_category.project_id
WHERE pojects_category.category_id IN (1,3,11) and projects.id='94'`
consigo un mismo proyecto regresó dos veces, porque hay 2 partidos en la mesa para el project_id
= 94
tabla projects_category
esquema:
CREATE TABLE IF NOT EXISTS `pojects_category` (
`project_id` int(10) NOT NULL,
`category_id` int(10) NOT NULL,
KEY `category_id` (`category_id`),
KEY `project_id` (`project_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `pojects_category` (`project_id`, `category_id`) VALUES
(94, 3),
(94, 1);
¿E-cando algo?
Solución: utilizar GROUP BY
o DISTINCT
Si solo quiere uno de cada proyecto, añada 'GROUP BY project_id' a su consulta – mariusnn
@mariusnn gracias, ¡funciona! – technology
No usar agrupar, ver mi explicación – Sebas