我有一个存储一些学生工作信息的表。我需要根据 studentID 和季度 ID 选择小时数。这是我所拥有的:
SELECT
(SELECT hours FROM clinicalStudents WHERE quarterID='201101' and studentID='$studentID') as q1,
(SELECT hours FROM clinicalStudents WHERE quarterID='201102' and studentID='$studentID') as q2,
(SELECT hours FROM clinicalStudents WHERE quarterID='201103' and studentID='$studentID') as q3,
(SELECT hours FROM clinicalStudents WHERE quarterID='201104' and studentID='$studentID') as q4
它只给了我一些数字,但不是全部。我在我的服务器管理器中运行了这个(减去 WHERE 子句)并收到一个错误:
“子查询返回超过 1 个值。当子查询跟随 =、!=、<、<=、>、>= 或子查询用作表达式时,这是不允许的”
任何帮助都会很棒。谢谢!
编辑:
$studentID 是在 while 循环中生成的,因此我在转到下一个学生之前使用该学生的小时数。我在每个季度为一个学生获取所有时间,添加它们(这必须在 sql 之外完成),将结果存储在一个变量中,然后转移到下一个学生。当我得到 1 个季度时,这很有效,但我在得到所有季度时遇到问题。
编辑第 2 轮:我想是以一种相当懒惰的方式做到的:
我刚刚为特定学生选择了所有时间和季度 ID。然后跑了一会儿(odbc_fetch_row())。如果是 201101,我将其添加到 $q1 堆中,201102 添加到 $q2 堆中,依此类推。处理速度有点慢,但对我正在做的事情来说不是一个大问题。