MySQL 和 PHP - 不是唯一的表/别名

2022-08-30 19:48:45

我收到下面列出的以下错误,并且想知道如何解决此问题。

Not unique table/alias: 'grades'

这是我认为给我带来问题的代码。

function getRating(){
$dbc = mysqli_connect ("localhost", "root", "", "sitename");

$page = '3';

$sql1 = "SELECT COUNT(*) 
         FROM articles_grades 
         WHERE users_articles_id = '$page'";

$result = mysqli_query($dbc,$sql1);

if (!mysqli_query($dbc, $sql1)) {
        print mysqli_error($dbc);
        return;
}

$total_ratings = mysqli_fetch_array($result);

$sql2 = "SELECT COUNT(*) 
         FROM grades 
         JOIN grades ON grades.id = articles_grades.grade_id
         WHERE articles_grades.users_articles_id = '$page'";

$result = mysqli_query($dbc,$sql2);

if (!mysqli_query($dbc, $sql2)) {
        print mysqli_error($dbc);
        return;
}

$total_rating_points = mysqli_fetch_array($result);
if(!empty($total_rating_points) && !empty($total_ratings)){
// set the width of star for the star rating
$rating = (round($total_rating_points / $total_ratings,1)) * 10; 
echo $rating;
} else {
    $rating = 100; 
    echo $rating;
}
}

答案 1

问题似乎在这里:

SELECT COUNT(*) 
FROM grades 
JOIN grades ON grades.id = articles_grades.grade_id
WHERE articles_grades.users_articles_id = '$page'"

您正在尝试将表成绩联接到其自身。你可能想加入articles_grades。


答案 2

如果您两次使用相同的名称,则需要使用别名:

SELECT FROM grades g1 ... 
JOIN grades g2 ON g1.id = g2.grade_id ...

请确保您打算使用同一名称两次,并且没有错误地输入相同的名称两次。


推荐