2010-01-16 37 views
18

Tôi nhận được lỗi sau được liệt kê bên dưới và đã tự hỏi làm cách nào để khắc phục vấn đề này.MySQL & PHP - Không phải bảng duy nhất/bí danh

Not unique table/alias: 'grades' 

Đây là mã mà tôi cho là mang lại cho tôi sự cố.

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

Trả lời

29

Vấn đề có vẻ là ở đây:

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

Bạn đang cố gắng tham gia các lớp bảng với chính nó. Bạn có thể có nghĩa là để tham gia với articles_grades.

+1

Điều kiện ON sẽ đề xuất đó là lỗi đánh máy – VolkerK

+0

Có vẻ như câu trả lời cũ nhưng tôi bị kẹt trong truy vấn Tôi nghĩ rằng 'JOIN grade' nên là' JOIN articles_grades' –

0

Tôi làm mỏng trong truy vấn $ sql2 bảng thứ hai không phải là điểm nhưng article_grades. vì vậy nó sẽ là:

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

nó nói rằng bởi vì bạn có lớp tên bảng trong truy vấn hai lần

5

Bạn cần phải sử dụng một bí danh nếu bạn đang sử dụng cùng tên hai lần:

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

Hãy chắc chắn rằng bạn có ý định để sử dụng cùng một tên hai lần và không nhập sai hai lần tên đó.

+0

Điều này đã giúp tôi với một vấn đề hơi không liên quan. Cảm ơn! – jordanm

Các vấn đề liên quan