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

tEc*_*nUt 21 php mysql

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

Not unique table/alias: 'grades'
Run Code Online (Sandbox Code Playgroud)

这是我认为给我问题的代码.

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;
}
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 33

问题似乎在这里:

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

您正在尝试将表等级加入到自身中.你可能想加入articles_grades.


Sam*_*son 6

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

SELECT FROM grades g1 ... 
JOIN grades g2 ON g1.id = g2.grade_id ...
Run Code Online (Sandbox Code Playgroud)

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