Đây nè:
1) Lấy danh sách các danh mục sản phẩm chứa sản phẩm cho trước, ví dụ id sản phẩm cho trước là 100:
Code:
SELECT cid FROM relationships r1 JOIN products p1 ON p1.pid=100 and p1.pid=r1.pid
2) Lấy danh sách tất cả các sản phẩm có danh mục sản phẩm thuộc vào 1), câu where cuối cùng để loại sản phẩm cho trước ra khỏi danh sách:
Code:
SELECT p.* FROM products p JOIN relationships r ON r.pid=p.pid AND r.cid IN (SELECT cid FROM relationships r1 JOIN products p1 ON p1.pid=100 and p1.pid=r1.pid) WHERE p.pid<>100;
Thực ra câu này vẫn chưa tối ưu, bồ tự nghĩ thử làm cách nào để tối ưu câu trên.
Hy vọng lần sau bồ hỏi những câu khó hơn