加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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错误:

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)) {

这些是我的表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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读