0
多くの結合でSQLクエリを使用しています。事実は、クエリがStudentClassテーブルとクラステーブルに参加する前に、正しい行量を4行に出力することでした。しかし、ClassクラスとStudentClassテーブルをインクルードすると、まだ4行を出力する必要があるときに6行が出力されます。問題は、学生が2つのモジュールを受け取り、2つのクラスにある場合、2つのモジュールが複製された4つのモジュールと、2つのクラスが複製された4つのクラスを出力することです。なぜこれが起こっているのですか?テーブルを設定する方法に問題があるのですか、それともクエリですか?以下はより多くのレコードを出力するクエリ
は、PHPのコードです:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Exam Grade Report</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<?php
if (isset($_POST['submit'])) {
$query = "
SELECT * FROM Course c
INNER JOIN CourseModule cm ON c.CourseId = cm.CourseId
JOIN Module m ON cm.ModuleId = m.ModuleId
JOIN Session s ON m.ModuleId = s.ModuleId
JOIN Grade_Report gr ON s.SessionId = gr.SessionId
JOIN Student st ON gr.StudentId = st.StudentId
JOIN StudentClass sc ON st.StudentId = sc.StudentId
JOIN Class cl ON sc.ClassId = cl.ClassId
WHERE
('".mysql_real_escape_string($sessionid)."' = '' OR gr.SessionId = '".mysql_real_escape_string($sessionid)."')
AND
('".mysql_real_escape_string($courseid)."' = '' OR cl.CourseId = '".mysql_real_escape_string($courseid)."')
AND
('".mysql_real_escape_string($moduleid)."' = '' OR cl.ModuleId = '".mysql_real_escape_string($moduleid)."')
AND
('".mysql_real_escape_string($classid)."' = '' OR sc.ClassId = '".mysql_real_escape_string($classid)."')
AND
('".mysql_real_escape_string($teacherid)."' = '' OR s.TeacherId = '".mysql_real_escape_string($teacherid)."')
AND
('".mysql_real_escape_string($studentid)."' = '' OR gr.StudentId = '".mysql_real_escape_string($studentid)."')
AND
('".mysql_real_escape_string($grade)."' = '' OR gr.Grade = '".mysql_real_escape_string($grade)."')
ORDER BY $orderfield ASC";
$num = mysql_num_rows($result = mysql_query($query));
mysql_close();
?>
</body>
</html>
私はワード文書に持っているクエリ結果とテーブルを表示したいです。あなたが望むならば、あなたはすべて単語の文書を開くことができるように、どうやって単語ファイルを添付できますか?
はあなた
これはコードのオーバーロードです。コード量を最小限に抑えて、関連するスニペットのみを表示してください –
SQLクエリの質問をする場合は、5マイル分のPHPとHTMLを含めないでください。問題の原因となっている実際のSQLを表示し、テーブル構造についての詳細がいくつかあります。 –
あなたは何をグループにしようとしていますか?学生? StudentClass?どのような情報を抽出しようとしていますか( 'SELECT *'を 'SELECT [フィールド]、[フィールド]、[フィールド] 'に置き換えたい場合があります)1)返されるデータの量を減らし、2)あなたが抽出しようとしている情報のアイデア)。 – Tom