sql >> Databasteknik >  >> RDS >> Mysql

Två vänsteranslutningar ger mig osanna data (dubbla data?) med MySQL

Problemet är att product_reviews och ordertabellen kan ha mer än en rad per produkt-id. Ett sätt du kan fixa detta är att använda en underfråga:

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. Är det möjligt att döda en enda fråga i Oracle utan att döda sessionen?

  2. Kan inte ansluta till Vagrant med HeidiSQL:Kan inte ansluta till MySQL-server på "localhost"

  3. Gör flera sidor av en mysql-fråga

  4. Hur installerar och konfigurerar mysql 5.6.16 i Windows 7