PHP/MySQL 连接语句

标签 php html mysql sql

我尝试使用 MySQL 的 AVG 为商店列表创建平均评分,然后在目录列表页面上的每个商店旁边显示平均评分。

每当有人对商店发表评论时,他们都会给出 1-5 的评分,该评分将插入到 TABLE reviewsrating 列中。

商店数据来自 TABLE reviews,表关系来自两个表中名为 store_id 的列。我尝试使用连接语句来获取显示在每家商店旁边的平均值。

这是带有 join 语句的评级循环中的当前代码:

<?php echo "<table>\n";
echo "<tr><th>Store ID</th><th>Rating</th></tr>\n";
$result1 = mysql_query("SELECT s.store_id AVG(r.rating) AS avg_rating
                       FROM stores as s
                       JOIN reviews as r ON s.store_id = r.store_name
                       GROUP BY s.store_id");
while ($row1 = mysql_fetch_assoc($result1)) {
    echo "<tr><td>$row1[store_id]</td><td>$row1[avg_rating]</td></tr>\n";
}
echo "</table>\n";?>
echo "</table>\n";?>

这是我收到的 SQL 错误

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(r.rating) AS avg_rating FROM stores'

这是我遇到的 PHP 错误:

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in /home/shopping/public_html/retailers.php on line 227

第 227 行是上面代码中的这一行:

while ($row1 = mysql_fetch_assoc($result1)) {

这些是我的表的两个结构:

CREATE TABLE `stores` (
  `store_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `store_name` varchar(255) NOT NULL DEFAULT '',

CREATE TABLE `reviews` (
  `rating_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `store_id` int(11) NOT NULL DEFAULT '0',
  `rating` tinyint(1) NOT NULL DEFAULT '0',

最佳答案

您的 SQL 查询无效。您需要从查询中省略 s.store_name 或将其包含在 GROUP BY

SELECT 
    s.store_id, 
    s.store_name, 
    AVG(r.rating) AS     
FROM stores as s
    JOIN reviews as r ON s.store_id = r.store_id
GROUP BY s.store_id, s.store_name

关于PHP/MySQL 连接语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20794425/

相关文章:

php - 如何获取excel文件中每个单元格的值,然后将其保存到mysql数据库中?

html - 如果您的页面在您的服务器上显示不正确,但在 jsFiddle 中显示正确,您会怎么做?

当我使用包含连字符 (-) 的值进行搜索时,MySQL SELECT 语句不返回任何记录

php - 是否可以将 PHP 嵌入到 Qt (Symbian) 中?

php - 将 json 数据解码为数组并在 PHP(Laravel) 中访问数组

javascript - 单击复选框时隐藏字段的总值不起作用

javascript - 附加所有列表项仅针对最后一项

javascript - 禁用对 div 类的点击,但需要启用对同一嵌套类的点击

PHP MYSQL 显示带评论的帖子

mysql - 从单列中选择逗号分隔值