project
1つが複数に属することができるモジュールの実装に問題がありますcategories
。例:プロジェクト「PHPProgrammer」は、プログラミング、PHPのカテゴリに属しています。
次のクエリを想定します(カテゴリ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'`
=のテーブルに2つの一致があるため、同じプロジェクトが2回返されます。project_category
project_id
94
テーブルprojects_category
スキーマ:
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);
私は何かが足りないのですか?
解決策:GROUP BY
またはを使用するDISTINCT