我有以下表:与列值0显示记录时没有记录
架构
tbl_semester_empid {ID,semester_name VARCHAR(50),起始日期}
tbl_batch_empid {id,semester_id,batch_name,session_room}
tbl_associate_empid {id,associate_name,batch_id,contact,joining_date,induction_result,stream_result int}
问题查询是:显示学期明智的关联计数。
我已经写了3个查询:
--basic query
SELECT s.ID "Semester Id", COUNT(*) "Associate Count" FROM TBL_SEMESTER_593932 s, TBL_ASSOCIATE_593932 a, TBL_BATCH_593932 b
WHERE s.ID=b.SEMESTER_ID AND a.BATCH_ID=b.ID
GROUP BY s.ID;
--used NVL function
SELECT s.ID "Semester Id", NVL(COUNT(*),0) "Associate Count" FROM TBL_SEMESTER_593932 s, TBL_ASSOCIATE_593932 a, TBL_BATCH_593932 b
WHERE s.ID=b.SEMESTER_ID AND a.BATCH_ID=b.ID
GROUP BY s.ID;
-- used LEFT OUTER JOIN and JOIN
SELECT s.ID "Semester Id", NVL(COUNT(*),0) "Associate Count"
FROM TBL_SEMESTER_593932 s LEFT OUTER JOIN TBL_BATCH_593932 b ON s.ID=b.SEMESTER_ID
JOIN TBL_ASSOCIATE_593932 a ON a.BATCH_ID=b.ID
GROUP BY s.ID;
所有这些显示以下输出(其显示对应于仅在其至少1名学生,如果泰斯在那个学期没有学生的学期记录,不显示任何信息,这学期):
我想在同事与他们没有任何关联的学期为0数列。所以,我想有两个LEFT OUTE同一连接:
SELECT s.ID "Semester Id", NVL(COUNT(*),0) "Associate Count"
FROM TBL_SEMESTER_593932 s LEFT OUTER JOIN TBL_BATCH_593932 b ON s.ID=b.SEMESTER_ID
LEFT OUTER JOIN TBL_ASSOCIATE_593932 a ON a.BATCH_ID=b.ID
GROUP BY s.ID;
然而结果是怪异:
第一个查询很棒,它按照期望的方式工作,但是第三个查询的结果不是很好,它应该是'来自TBL_SEMESTER_593932的左连接** TBL_BATCH_593932 b **在s.ID = b.SEMESTER_ID连接** TBL_ASSOCIATE_593932 a **在a.BATCH_ID = b.ID'上。然而,这与我最后一次查询类似,没有显示没有学生的学期记录 – Mahesha999
@ Mahesha999:感谢您向我展示错误:我相应地更正了查询。 – alzaimar
,但它仍然没有显示与他们没有关联的学期的记录:( – Mahesha999