我有一个简单的目标数据库,
$ sql = mysqli_query($ con,“SELECT * FROM users,rating WHERE users.user_id = rating.user_id GROUP BY rating.user_id”);
$输出=阵列();而($ HSL = mysqli_fetch_array(…
您可以使用 joins 获取所需的所有信息,这样您就可以在数据库中拥有一个查询而不是1 +用户数。如果您拥有大量用户,那么这可以带来巨大的性能优势。
joins
下面我假设你将目的地名称保存在一列中 title 并且这些值'user1','user2'...存储在 user_id 柱。如果列名不同,请随意更改我的代码。
title
user_id
$sql = "SELECT * FROM users INNER JOIN rating ON users.user_id=rating.user_id INNER JOIN destination ON rating.dest_id = destination.dest_id"; $result = mysqli_query($con, $sql); $reviews = []; while($row = mysqli_fetch_array($result)) { $rating = ($row['1_rating'] + $row['2_rating'] + $row['3_rating'] + $row['4_rating']) / 4; $reviews[$row['user_id']][$row['title']] = $rating; } print_r($reviews);
这将为您提供所有来自用户评论的目的地。
的 编辑 强> 您可以通过添加来计算平均值 AVG(1_rating + 2_rating + 3_rating + 4_rating) 在你的 SELECT 。你还应该添加 group by dest_id, user_id
AVG(1_rating + 2_rating + 3_rating + 4_rating)
SELECT
group by dest_id, user_id