如何使用三个表进行mysql查询

时间:2019-07-12 17:55:57

标签: mysql

我有三个表:

产品:

IDproduct    Name        reference      stock       shop
1            reloj       1234           2            1
2            pulsera     5678           3            1
3            anillo      91011          2            2 
4            colgante    121314         1            2

商店

IDshop      
1        
2  

订单

IDorder   Ordersid_shop     id_product     rate
1               1             2           3
2               1             3           5
3               2             4           2
4               1             4           2
5               2             1           4
6               2             5           5
7               1             1           2
8               1             1           3

我想获取查询:

IDproduct  Idshop  MediumRate
   1         1       (3+5+2+4+2+3)/6=3.16
   2         1       3.16
   3         2       (2+4+5)/3=3.66 
   4         2       3.66

但是当我进行此查询时:

SELECT iDorder, rate, ROUND((SUM(rate)/SUM(if(rate> '0', 1, 0))),1) as MediumRate, IDshop, IDproduct, shop
FROM Shops 
INNER JOIN Products ON shop= IDshop
INNER JOIN Orders ON Ordersid_shop = IDshop
ORDER by IDproduct

我得到这个:

IDproduct  Idshop  MediumRate
   1         1       3.1

只有一个寄存器

1 个答案:

答案 0 :(得分:2)

此Select语句

  Select iDorder, rate, ROUND((SUM(rate)/SUM(if(rate> '0', 1, 0))),1) as MediumRate,     IDshop, IDproduct, shop
  From orders 
  inner join shops  on Ordersid_shop = IDshop
  inner join products on id_product = IDproduct
  Group by IDproduct
  order by IDproduct;

得到你

 iDorder    rate    MediumRate  IDshop  IDproduct   shop
   5         4        3            2        1         1
   1         3        3            1        2         1
   2         5        5            1        3         2
   3         2        2            2        4         2

您必须先从订单开始,然后再内部合并其余部分