solucion - MySQL y PHP-Tabla/alias no únicos
not unique table/alias mysql solucion (4)
Recibo el siguiente error que figura a continuación y me preguntaba cómo puedo solucionar este problema.
Not unique table/alias: ''grades''
Aquí está el código que creo que 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;
}
}
Debe usar un alias si usa el mismo nombre dos veces:
SELECT FROM grades g1 ...
JOIN grades g2 ON g1.id = g2.grade_id ...
Asegúrese de que pretendía usar el mismo nombre dos veces, y no ingresó el mismo nombre por error dos veces.
El problema parece estar 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 unir las calificaciones de la tabla a sí mismo. Probablemente quisiste unirte a articles_grades.
Pienso que en la consulta $ sql2 la segunda tabla no son calificaciones sino article_grades. Así será:
"SELECT COUNT(*)
FROM grades
JOIN articles_grades ON grades.id = articles_grades.grade_id
WHERE articles_grades.users_articles_id = ''$page''"
está diciendo que debido a que tiene calificaciones de nombre de tabla en la consulta dos veces