Ho un problema con l'implementazione di un modulo in cui uno project
può appartenere a più categories
. Esempio: il progetto "Programmatore PHP" appartiene alle categorie: Programmazione, PHP.MySQL LEFT JOIN duplicati risultati
Assumendo la seguente query (selezionare i progetti che appartengono a categorie 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'`
ottengo un l'stesso progetto è tornato due volte, perché ci sono partite la tavola per la project_id
= 94
tabella projects_category
schema:
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);
Mi manca qualcosa?
Soluzione: utilizzare GROUP BY
o DISTINCT
Se si desidera solo uno di ciascun progetto, aggiungere 'GROUP BY project_id' alla query – mariusnn
@mariusnn grazie, funziona! – technology
Non usare group by, vedere la mia spiegazione – Sebas