我需要在網頁中一起顯示多個查詢(它們不能組合成一個大查詢,至少我不這麼認爲)。我會解釋一些關於這個問題的疑問。我在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