PHP / MySQL Join语句不起作用

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了PHP / MySQL 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

脚本宝典总结

以上是脚本宝典为你收集整理的PHP / MySQL Join语句不起作用全部内容,希望文章能够帮你解决PHP / MySQL Join语句不起作用所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。