私は2つのテーブルを持っています:リストとレビュー。 私は状態に基づいている最高のレビューを持つリストを取得しようとします。だから私は、リストのすべてのレビューからAVGを取得し、リストをDESCする必要があります。SQL - 別のテーブルの数からAVGを取得
表の構造: リスト:id;タイトル;状態; ...
レビュー: id; listing_id;評価(1-5)
私はちょうどほとんどのレビューのDESCリストを解決することができましたが、今ではレビューの評価のAVGを取得しようとします。
SELECT *,
(SELECT COUNT(*)
FROM reviews rv
WHERE ls.id = rv.listing_id) Count
FROM listing ls
WHERE ls.state ='$get_state'
ORDER BY Count DESC
サンプルデータ:IDリスト1
Listing:
id title State
1 Hotel with nice view Arizona
2 Hotel to stay Arizona
Review:
id listing_id rating
1 1 4(stars)
2 1 4(stars)
3 1 3(stars)
4 2 5(stars)
3件の口コミを持って、11月3日はレビューの合計スター値は= IDリスト2 3.6つ星
1件、総星を得ました5/1 = 5 stars
私は最初にリスト2を取得し、次にリスト1を取得する必要があります。 すべてをPHPページに表示したいと思います。
次は何ができますか?あなたはちょうどあなたが(浮動小数点または小数など)小数点以下の精度を得るために、MSSQL、CAST列の格付けを使用している場合、平均評価
SELECT ls.id,
title,
state,
ROUND(AVG(rating),2) avg_rating
FROM listing ls
JOIN review rv
ON ls.id = rv.listing_id
WHERE ls.state = '$get_state'
GROUP BY ls.id,
title,
state
ORDER BY avg_rating DESC
を取得するために、AVG()関数を使用することができ、ヘルプ
サンプルデータを提供し、その結果が –
@FerdinandGaspar行わ予想、感謝 – Lolipopkebab
あなたが –