Tôi gặp sự cố khi triển khai mô-đun trong đó một project
có thể thuộc về nhiều categories
. Ví dụ: project "PHP Programmer" thuộc về các loại: Lập trình, PHP.MySQL LEFT JOIN kết quả trùng lặp
Giả sử các truy vấn sau (chọn dự án thuộc loại 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'`
tôi nhận được một dự án tương tự trở lại hai lần, bởi vì có trận đấu ở các bảng cho project_id
= 94
bảng 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);
Tôi có thiếu gì đó không?
Giải pháp: sử dụng GROUP BY
hoặc DISTINCT
Nếu bạn chỉ muốn một trong mỗi dự án, hãy thêm 'GROUP BY project_id' vào truy vấn của bạn – mariusnn
@mariusnn cảm ơn bạn, nó hoạt động! – technology
Không sử dụng nhóm theo, xem giải thích của tôi – Sebas