我需要在网页中一起显示多个查询(它们不能组合成一个大查询,至少我不这么认为)。我会解释一些关于这个问题的疑问。我在MySQL中有一个数据库,其中有3个相同格式的问题表通过classid链接到响应表。响应表通过instructorid链接到教师表。我需要显示一张表格,显示教师存在的每条记录的所有3个问题分数,每个表格后面跟着一些文字,表明哪个问题具有最高值以及最少值。我在MySQL中创建了一个uniontbl
视图,该视图是一个联合查询,其字段为ClassID
,Average
和TableName
。我至今是:显示多个PHP查询
$query2 = "SELECT `tbl_instructor`.`FirstName`,
`tbl_instructor`.`LastName`,
`tbl_term`.`TermID`,
`tbl_ucourse`.`Abbreviation`,
`tbl_ucourse`.`Series`,
`tbl_uquestion01`.`Average` AS `Q1`,
`tbl_uquestion02`.`Average` AS `Q2`,
`tbl_uquestion03`.`Average` AS `Q3`
FROM `tbl_instructor`
LEFT JOIN `undergrad`.`tbl_uresponse` ON `tbl_instructor`.`InstructorID` = `tbl_uresponse`.`InstructorID`
LEFT JOIN `undergrad`.`tbl_ucourse` ON `tbl_uresponse`.`CourseID` = `tbl_ucourse`.`CourseID`
LEFT JOIN `undergrad`.`tbl_Term` ON `tbl_UResponse`.`TermID` = `tbl_Term`.`TermID`
LEFT JOIN `undergrad`.`tbl_uquestion01` ON `tbl_uresponse`.`ClassID` = `tbl_uquestion01`.`ClassID`
LEFT JOIN `undergrad`.`tbl_uquestion02` ON `tbl_uresponse`.`ClassID` = `tbl_uquestion02`.`ClassID`
LEFT JOIN `undergrad`.`tbl_uquestion03` ON `tbl_uresponse`.`ClassID` = `tbl_uquestion03`.`ClassID`
WHERE CONCAT(LastName, ', ', FirstName, ' (', UserID, ')') = '{$instructor}'";
$query3 = "SELECT `tbl_instructor`.`FirstName`,
`tbl_instructor`.`LastName`,
`uniontbl`.`ClassID`,
`uniontbl`.`TableName`,
`tbl_uresponse`.`InstructorID`
FROM `tbl_Instructor`
LEFT JOIN `undergrad`.`tbl_uresponse` ON `tbl_instructor`.`InstructorID` = `tbl_uresponse`.`InstructorID`
LEFT JOIN `undergrad`.`uniontbl` ON `tbl_uresponse`.`ClassID` = `uniontbl`.`ClassID`
WHERE CONCAT(LastName, ', ', FirstName, ' (', UserID, ')') = '{$instructor}'
ORDER BY `uniontbl`.`Average` DESC
LIMIT 1";
$query4 = "SELECT `tbl_instructor`.`FirstName`,
`tbl_instructor`.`LastName`,
`uniontbl`.`ClassID`,
`uniontbl`.`TableName`,
`tbl_uresponse`.`InstructorID`
FROM `tbl_Instructor`
LEFT JOIN `undergrad`.`tbl_uresponse` ON `tbl_instructor`.`InstructorID` = `tbl_uresponse`.`InstructorID`
LEFT JOIN `undergrad`.`uniontbl` ON `tbl_uresponse`.`ClassID` = `uniontbl`.`ClassID`
WHERE CONCAT(LastName, ', ', FirstName, ' (', UserID, ')') = '{$instructor}'
ORDER BY `uniontbl`.`Average` ASC
LIMIT 1";
$result2 = mysqli_query($query2);
$result3 = mysqli_query($query3);
$result4 = mysqli_query($query4);
while($row2 = mysqli_fetch_assoc($result2))
{
echo "<br>";
echo"<table>";
echo "<tr>";
echo "<th>Q1</th>";
echo "<th>Q2</th>";
echo "<th>Q3</th>";
echo "</tr>";
echo "<tr>";
echo "<td>" . $row2['Q1'] . "</td>";
echo "<td>" . $row2['Q2'] . "</td>";
echo "<td>" . $row2['Q3'] . "</td>";
echo "</tr>";
echo"<br>";
echo "</table>";
while($row3 = mysqli_fetch_assoc($result3))
{
echo $row3['TableName'];
}
echo "<br>";
while($row4 = mysqli_fetch_assoc($result4))
{
echo $row4['TableName'];
}
echo "<br>";
}
那么,如何我试图解决这个问题是使用第二和第三查询以确定哪些问题已经从uniontbl
视图的最高和最低分数,并显示,经过每个表格包含问题分数。问题是第二个和第三个查询只显示在第一个表(或记录)之后并且在此之后根本不显示。我有一种感觉,问题在于实际的查询本身,但我想不出解决问题的另一种方式。附:我知道我的代码不是最好的(回应HTML等),但我只是试图让它工作...
每个记录将显示为一个单独的表的原因是因为每个记录与不同的类相关联。当然,问题分数也因记录而异,所以第二个和第三个问题的目的是确定哪个问题得分最高,哪个问题对每个类(或记录)最低。这看起来有点没有意义(您可以直观地确定这一点),但下一步将根据哪个问题得分最高/最低来显示某些文本。 – user3362278
但第二个和第三个查询没有返回每个类的信息。他们只是返回教练的最高和最低分数。 – Barmar
只是简单的说明,第二个和第三个查询不返回最高/最低的分数,他们返回表格的名称(换句话说,哪个问题)得分最高/最低。任何关于如何让他们按照每个类执行此操作的建议?... – user3362278