使用PHP 5.5.29连接到Oracle 12c数据库,在php信息页面安装并验证了OCI8。
此代码正常运行并返回所有匹配的学生
SELECT pcs.Student_Number as SNUMBER, pcs.STRING_VALUE as PW, s.GUARDIANEMAIL as GEMAIL, s.WEB_ID as LOGIN, s.FIRST_NAME as FN, s.LAST_NAME as LN, pec.EMAILADDRESS as EMAIL
FROM PVSIS_CUSTOM_STUDENTS pcs
INNER JOIN STUDENTS s
ON pcs.STUDENT_NUMBER = s.STUDENT_NUMBER
INNER JOIN GuardianStudent gs
ON s.DCID = gs.STUDENTSDCID
INNER JOIN PCAS_EMAILCONTACT pec
ON gs.GUARDIANID = pec.EXTERNALIDENT
WHERE pcs.SCHOOLID=9
AND pcs.FIELD_NAME='web_password'
AND s.ENROLL_STATUS=0
然而,添加另一个条件来找到一个学生失败并且似乎没有返回错误,只找到0行。我正在使用" 12345"例如,是的它是一个数字字段,所以我不需要引用它。
SELECT pcs.Student_Number as SNUMBER, pcs.STRING_VALUE as PW, s.GUARDIANEMAIL as GEMAIL, s.WEB_ID as LOGIN, s.FIRST_NAME as FN, s.LAST_NAME as LN, pec.EMAILADDRESS as EMAIL
FROM PVSIS_CUSTOM_STUDENTS pcs
INNER JOIN STUDENTS s
ON pcs.STUDENT_NUMBER = s.STUDENT_NUMBER
INNER JOIN GuardianStudent gs
ON s.DCID = gs.STUDENTSDCID
INNER JOIN PCAS_EMAILCONTACT pec
ON gs.GUARDIANID = pec.EXTERNALIDENT
WHERE pcs.SCHOOLID=9
AND pcs.FIELD_NAME='web_password'
AND s.ENROLL_STATUS=0
AND s.STUDENT_NUMBER=12345
答案 0 :(得分:1)
我无法看到任何明显的"错误"用你的sql。 但是,如果学生12345以任何方式丢失来自(dcis,studentsdcid,guardianid,externalident,student_number)的数据,或者任何表中没有匹配的数据。然后,由于您正在使用内部联接,因此不会返回任何记录。
2条建议:
*当您尝试搜索学生12345时,尝试将内部联接更改为左联接。如果它返回任何数据,您将看到可能缺少的内容
*尝试从第一个sql语句中搜索出现在列表中的学生。如果这仍然没有返回任何记录,那么你可能需要重构你的sql语句
答案 1 :(得分:0)
这可能导致没有任何记录符合这些条件,因为它是legendCallback
。尝试将最后一个条件设为AND
条件,并查看
OR
答案 2 :(得分:0)
我不是在编写整个查询,只是下面的示例 使用OR条件:
SELECT pcs.Student_Number as SNUMBER, pcs.STRING_VALUE as PW,
s.GUARDIANEMAIL as GEMAIL, s.WEB_ID as LOGIN, s.FIRST_NAME as FN,
s.LAST_NAME as LN, pec.EMAILADDRESS as EMAIL
FROM PVSIS_CUSTOM_STUDENTS pcs
INNER JOIN STUDENTS s
ON pcs.STUDENT_NUMBER = s.STUDENT_NUMBER
INNER JOIN GuardianStudent gs
ON s.DCID = gs.STUDENTSDCID
INNER JOIN PCAS_EMAILCONTACT pec
ON gs.GUARDIANID = pec.EXTERNALIDENT
WHERE pcs.SCHOOLID=9
AND pcs.FIELD_NAME='web_password'
AND s.ENROLL_STATUS=0
AND s.STUDENT_NUMBER=12345
OR
<other Student details>