gpt4 book ai didi

php - 查询输出的记录多于应有的记录

转载 作者:行者123 更新时间:2023-11-29 14:42:03 25 4
gpt4 key购买 nike

我有一个带有大量连接的 SQL 查询。事实是,在查询必须连接 StudentClass 表和 Class 表之前,它输出了正确的行数,应该是 4 行。但是,当我包含 Class 和 StudentClass 表时,它会输出 6 行,而实际上它应该仍输出 4 行。问题是,如果一个学生正在学习 2 个模块并分在 2 个类(class),那么它会输出 4 个模块,即 2 个模块重复,以及 4 个类(class),其中 2 个类(class)重复。为什么会发生这种情况,是我设置表的方式有问题还是查询有问题?

下面是 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>

我想显示我在word文档上得到的查询结果和表格。顺便请问如何附上一个word文件,以便大家都可以打开这个word文档呢?

谢谢

最佳答案

您是否尝试过将所有 JOIN 更改为 LEFT JOIN?

关于php - 查询输出的记录多于应有的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7795071/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com