2010-01-16 48 views
18

我收到下面列出的错误,想知道我该如何解决这个问题。MySQL&PHP - 非唯一表/别名

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; 
} 
} 

回答

29

这个问题似乎是在这里:

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

您试图加入表成绩本身。您可能打算加入articles_grades。

+1

ON条件表明它是一个错字 – VolkerK 2010-01-16 12:45:41

+0

这似乎是一个很旧的答案,但我被卡在查询我认为'JOIN等级'应该''JOIN articles_grades' – 2016-01-19 07:06:09

0

我很瘦,在$ sql2查询第二个表是不是成绩,但article_grades。所以这将是:

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

它说,因为你在查询中有表名的成绩两次

5

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

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

请确保您的意图使用两次相同的名称,并没有错误地输入两次相同的名称。

+0

这帮助我一个有点无关的问题。谢谢! – jordanm 2012-03-22 18:07:05