PHP / MySQL Join语句不起作用
发布时间:2020-12-13 16:52:02 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试使用Mysql AVG为商店列表创建平均评级,然后在目录列表页面上显示每个商店旁边的平均值. 每当有人为商店留下评论时,他们给出的评分为1-5,在列评级中插入到TABLE评论中 商店数据来自TABLE评论,表关系来自两个名为store_id的表中的列.我尝试使用join
我正在尝试使用Mysql AVG为商店列表创建平均评级,然后在目录列表页面上显示每个商店旁边的平均值.
每当有人为商店留下评论时,他们给出的评分为1-5,在列评级中插入到TABLE评论中 商店数据来自TABLE评论,表关系来自两个名为store_id的表中的列.我尝试使用join语句来获得每个商店旁边显示的平均值. 这是使用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错误:
第227行是上面代码中的这一行: while ($row1 = mysql_fetch_assoc($result1)) { 这些是我的表2结构: 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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |