2010-01-16 12 views
18

Aparece el siguiente error y me pregunto cómo puedo solucionar este problema.MySQL y PHP: tabla no única/alias

Not unique table/alias: 'grades' 

Aquí está el código que creo me está dando el problema.

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

Respuesta

29

El problema parece ser aquí:

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

Usted está tratando de unirse a las clases de mesa a sí mismo. Probablemente quisiste unirte a articles_grades.

+1

La condición ON sugeriría que es un error tipográfico – VolkerK

+0

Parece ser una respuesta muy antigua, pero me quedé atrapado en la consulta Creo que 'JOIN grades' debería ser' JOIN articles_grades' –

0

Delgado en la consulta $ sql2 la segunda tabla no es grados sino article_grades. por lo que será:

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

que está diciendo que debido a que usted tiene grados nombre de tabla en la consulta dos veces

5

Es necesario utilizar un alias si está utilizando el mismo nombre dos veces:

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

Asegúrese de que intente para usar el mismo nombre dos veces, y no haya ingresado el mismo nombre por error dos veces.

+0

Esto me ayudó con un problema poco relacionado. ¡Gracias! – jordanm

Cuestiones relacionadas