Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Dua gabungan kiri memberi saya data yang tidak benar (data ganda?) dengan MySQL

Masalahnya adalah product_reviews dan tabel pesanan dapat memiliki lebih dari satu baris per id produk. Salah satu cara Anda dapat memperbaikinya adalah dengan menggunakan subquery:

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. Menggunakan .aggregate() pada nilai yang diperkenalkan menggunakan .extra(select={...}) dalam Django Query?

  2. Bagaimana melakukan pagination di simpledb

  3. Koneksi SSL PHP ke MySQL

  4. gunakan kumpulan hasil prosedur tersimpan mysql di prosedur tersimpan lainnya

  5. Kesalahan Batas Model CakePHP dan HABTM