Chào mn. Hiện tại mình trong database mình có tạo 4 bảng. Đại loại ý tưởng của mình là một sản phẩm X sẽ được chia nhỏ ra gồm nhiều biến thể khác dựa theo màu sắc và kích thước.
4 bảng gồm: san_pham
, mau_sac
, kich_thuoc
, bien_the_san_pham
Trong đó, bien_the_san_pham
có cột product_id
là foreign key tham chiếu đến khóa chính id
của san_pham
, color_id
tham chiếu đến khóa chính id
của mau_sac
, size_id
tham chiếu đến kich_thuoc
.
Bây giờ khi muốn lấy ra danh sách sản phẩm cùng với các biến thể của nó thì mình tính sử dụng LEFTJOIN
cả 4 bảng với nhau để lấy ra tất cả các biến thể dựa vào bảng bien_the_san_pham
. Sau đó sử dụng vòng lặp để nhóm riêng từng biến thể lại theo id
trong san_pham
.
Mn có thể tư vấn cho mình xem liệu có cách nào giúp thực hiện công việc trên nhanh gọn hơn giúp mình với ạ. Cảm ơn mn. Dưới là truy vấn của mình và kết quả trả về:
SELECT
products.id,
products.name,
product_sizes.NAME AS size,
product_colors.NAME AS color
FROM
product_variation
LEFT JOIN products ON products.id = product_variation.product
LEFT JOIN product_sizes ON product_variation.size = product_sizes.id
LEFT JOIN product_colors ON product_variation.color = product_colors.id
id | name | size | color |
---|---|---|---|
01 | San pham 01 | Size M | Mau do |
02 | San Pham 02 | Size M | Mau do |
01 | San Pham 01 | Size M | Mau xanh |
01 | San Pham 01 | Size M | Mau cam |
01 | San Pham 01 | Size S | Mau do |