2010-01-16 50 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