0

採点されたエッセイの数を数えようとしているので、ページに表示する結果の数がわかります。しかし、コードを正しく動作させることができないようです。誰か助けてもらえますか?

事前に助けてくれてありがとう!

これが私がこれまでに得たものです。

SELECT students.*, students_essays.*, COUNT(students_essays.id) 
FROM students  
INNER JOIN students_essays ON students.student_id = students_essays.student_id 
INNER JOIN essays_grades ON students_essays.id = essays_grades.students_essays_id

私のページネーションでは、以下のコードのようになります。

 $q = "SELECT COUNT(id) FROM students_essays";
 $r = mysqli_query ($mysqli, $q) or trigger_error("Query: $q\n<br />MySQL Error: " . mysqli_error($mysqli));
 $row = mysqli_fetch_array ($r);
 $records = $row[0];

念のため、ここに私の MySQL テーブルを示します。

CREATE TABLE students_essays (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
student_id INT UNSIGNED NOT NULL,
content TEXT NOT NULL,
PRIMARY KEY (id)
);


CREATE TABLE students (
student_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
student_first_name VARCHAR(255) DEFAULT NULL,
student_last_name VARCHAR(255) DEFAULT NULL,
pass CHAR(40) NOT NULL,
PRIMARY KEY (student_id)
);


CREATE TABLE essays_grades (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
grade_id INT UNSIGNED NOT NULL,
students_essays_id INT UNSIGNED NOT NULL,
student_id INT UNSIGNED NOT NULL,
PRIMARY KEY (id)
);

CREATE TABLE grades (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
letter_grade VARCHAR(2) DEFAULT NULL,
grade_points FLOAT UNSIGNED NOT NULL DEFAULT 0,
PRIMARY KEY (id)
);

エラーメッセージは次のとおりです。

 Error: 1140 - Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause in 
4

2 に答える 2

1

まあ、手元にある情報に基づいて推測しています...

$q = "SELECT COUNT(id) FROM students_essays se INNER JOIN essays_grades eg ON se.id = eg.students_essays_id"; 

これにより、成績レコードが一致するすべてのエッセイが返されます。

于 2010-08-06T18:32:23.683 に答える
0
SELECT students.*, students_essays.*, COUNT(students_essays.id)...

students.*students_essays.*複数の行を返しますが、COUNT(students_essays.id)常に 1 行だけを返します。私の経験では、MySQL は行数と最初の行のみを返します。必要なことを行う最も簡単な方法は、2 つの別個のクエリを実行することです。1 つはカウント用で、もう 1 つは実際のデータを取得するためです。

于 2010-08-06T18:39:10.407 に答える