MySQL & PHP - не уникальная таблица / псевдоним - PullRequest
21 голосов
/ 16 января 2010

Я получаю следующую ошибку, указанную ниже, и мне было интересно, как я могу решить эту проблему.

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

Ответы [ 4 ]

32 голосов
/ 16 января 2010

Кажется, проблема здесь:

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

Вы пытаетесь присоединить таблицу оценок к себе. Вы, вероятно, хотели присоединиться к article_grades.

6 голосов
/ 16 января 2010

Вам необходимо использовать псевдоним, если вы используете одно и то же имя дважды:

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

Убедитесь, что вы намеревались использовать одно и то же имя дважды, и по ошибке не вводили одно и то же имя дважды.

2 голосов
/ 16 января 2010

это говорит о том, что из-за того, что у вас в запросе дважды указаны имена таблиц

0 голосов
/ 16 января 2010

Мне кажется, что в запросе $ sql2 вторая таблица - не оценки, а article_grades. так будет:

"SELECT COUNT(*) 
         FROM grades 
         JOIN articles_grades ON grades.id = articles_grades.grade_id
         WHERE articles_grades.users_articles_id = '$page'"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...