Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Hai phép nối bên trái cung cấp cho tôi dữ liệu không đúng sự thật (dữ liệu kép?) Với MySQL

Vấn đề là product_reviews và bảng đơn đặt hàng có thể có nhiều hơn một hàng cho mỗi id sản phẩm. Một cách bạn có thể sửa lỗi này là sử dụng truy vấn con:

SELECT `products`.*, 
  o.revenue,
  o.qty, 
  ROUND(avg_stars) as avg_stars 
FROM `products` 
LEFT JOIN
(
  select `product_id`, 
    sum(total_count) revenue,
    sum(quantity) qty
  from `orders`
  where `status` in ('delivered', 'new')
  group by `product_id`
) o
  ON `products`.`id` = o.`product_id`
LEFT JOIN
(
  select product_id, avg(stars) avg_stars
  from product_reviews
  group by product_id
) pr
    ON (products.id = pr.product_id)
ORDER BY products.ID DESC
LIMIT 10
OFFSET 0


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. chuyển tệp sql cho nodejs để thực thi toàn bộ

  2. Làm thế nào để chọn tất cả các cột trong sql ngoại trừ một cột?

  3. MySQL Zend Framework - SQLSTATE [42000]:Lỗi cú pháp hoặc vi phạm quyền truy cập:1064

  4. MYSQL và mệnh đề LIMIT

  5. Sử dụng khung thực thể với MySQL DB và trình thiết kế mô hình không nhận các tham số proc được lưu trữ