在访问连接表中使用sql获取前10名

时间:2015-10-06 16:38:01

标签: sql ms-access-2010

这些是我的表格:

表业务

 USERNAME|USERPASSWORD|NAME|
 user1   |123         |mr.1|
 user2   |234         |mr.2|

表USER

FOODID|FOODNAME|FOODPRICE|BUSINESSUSERNAME|
1     |CAKE    | 5       |Res1            |
2     |SHAKE   | 2       |Res2            |
3     |COLA    | 3       |Res1            |

表食物

FOODREVIEWID|FOODID|FOODRATING|BUSINESSUSERNAME|USERNAME|
1           |2     |3         |Res2            |user1   |
2           |2     |5         |Res2            |user2   |
3           |1     |4         |Res1            |user1   |
4           |3     |1         |Res1            |user1   |

表FOOD_RATING

RANK|FOODNAME|FODPRICE|AVGRATING|BUSINESSUSERNAME
 1   |CAKE     |5       |4        |Res1
 2   |SHAKE    |3       |4        |Res2
 3   |COLA     |3       |1        |Res1
 .
 .
 .
10

我想根据平均评分获得十大食品:

{{1}}

1 个答案:

答案 0 :(得分:1)

编辑:添加了SELECT TOP 10

ORDER BY来自GROUP BY

SELECT TOP 10 FOOD.FOODNAME, FOOD.FOODPRICE
 , IIF(Round(Avg(FOODRATING), 1) IS NULL, 0, Round(Avg(FOODRATING), 1)) AS FOODAVGRATING
FROM FOOD
LEFT JOIN FOOD_REVIEW ON FOOD.FOODID = FOOD_REVIEW.FOODID
WHERE (((FOOD.BUSINESSUSERNAME) = "someusername"))
GROUP BY FOOD.FOODNAME, FOOD.FOODPRICE
ORDER BY IIF(Round(Avg(FOODRATING), 1) IS NULL, 0, Round(Avg(FOODRATING), 1)) DESC;