簡體   English   中英

4表聯接並找到一列的平均值

[英]4 table join and finding the average of a column

我有4張桌子

  • 用戶[id,名稱,.....]
  • 餐廳[id,名稱,.....]
  • 評論[restaurant_id,user_id]
  • 問題[id,review_id,分數]

    應用邏輯=>對於每個餐廳的人們都可以進行評論,評論中有一些問題,問題總是一樣的,例如口味,交貨方式等。人們會在這些問題上給分數。

換而言之,用戶會針對一些問題對餐廳進行評論

現在,在我的Web應用程序中,我想在那里顯示帶有"Question table's score average"的餐廳列表。

我正在使用laravel。 雄辯的查詢生成器也會有所幫助。 我想將總餐廳數據作為計算字段作為average_rating。

在這四個表中,您只需要一個標准的INNER JOIN即可,如下所示:

SELECT rs.name, avg(qt.score) 
  FROM Restaurant rs 
  JOIN Review rv ( rv.restaurant_id = rs.id )
  JOIN User ur ( ur.id = rv.user_id )
  JOIN Question qt ON ( qt.review_id = rv.id )
 GROUP BY rs.name 
 ORDER BY avg(qt.score) desc, rs.name;

該理論可以解釋為:

  • 所有評論都為餐廳安排

  • 我們關注那些評論 餐廳用戶

  • 所有評論中都包含問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM