我有关系数据库,并试图执行以下查询最多3个表。它给了我正确的结果,即248名学生在学院id 910的记录,但当我试图查询超过3个表,它给我19000+结果。
SELECT *
FROM Student,StudentRegistration,RefStudentType,RefGender,SubjectCategory
WHERE Student.student_id=StudentRegistration.student_student_id
AND StudentRegistration.reg_student_type_std_type_id = RefStudentType.std_type_id
AND Student.student_gender_gender_id = RefGender.gender_id
AND StudentRegistration.reg_student_subjectCat_sub_cat_id=SubjectCategory.sub_cat_id
AND Student.student_institute_inst_id=910;
尝试使用JOIN,但相同的19000+记录不正确的结果
SELECT * FROM Student INNER JOIN StudentRegistration ON student_id=student_student_id INNER JOIN RefReligion ON RefReligion.religion_id=Student.student_religion_religion_id INNER JOIN RefStudentType ON RefStudentType.std_type_id=StudentRegistration.reg_student_type_std_type_id WHERE student_institute_inst_id=910;
任何解决方案,查询逻辑错误或一些新的
我认为这是由于一个数据有几个记录。例如,在id = '910'的SubjectCategory表中可能有几条记录
最好使用左/右/内/外连接,而不要使用from tbl1, tbl2
我建议用id一个一个地检查表。