为 APEX 饼图放置和未放置的返校学生
Posted
技术标签:
【中文标题】为 APEX 饼图放置和未放置的返校学生【英文标题】:Returning students who are placed and unplaced for an APEX pie chart 【发布时间】:2012-12-05 00:02:37 【问题描述】:我正在尝试为 APEX 饼图编写查询,该饼图显示有多少学生被安排参加实习,哪些学生没有。
有一个主键为record_number
的students
表和一个外键指向record_number
的应用程序表。申请表有一个 status_id
字段,如果学生被安排实习,则该字段的值是 3
、4
或 7
,任何其他值表示他们没有实习。
这是我迄今为止的查询,它成功显示了那些被安排实习的人:
SELECT NULL AS link, 'Placed' AS label, COUNT(*) AS value
FROM tbl_students students
JOIN tbl_applications applications USING (record_number)
WHERE applications.status_id IN (3, 4, 7)
这成功返回一行显示有多少学生被安排实习,但是我需要它再返回一行显示没有实习的学生数量,同时仍然只有这三个字段( link
、label
和 value
)。
举个例子,如果我在数据库中有 10 个学生,其中 4 个被安排在实习,查询应该返回这些行:
link | label | value
---------------------------------
(null) | Placed | 4
(null) | Unplaced | 6
非常感谢任何帮助。
【问题讨论】:
【参考方案1】:以下假设每个 tbl_students 在 tbl_applications 中只有一条记录:
SELECT NULL AS link,
CASE WHEN applications.status_id IN (3,4,7)
THEN 'Placed' ELSE 'Unplaced'
END AS label,
COUNT(*) AS value
FROM tbl_students students
JOIN tbl_applications applications USING (record_number)
GROUP BY CASE WHEN applications.status_id IN (3,4,7)
THEN 'Placed' ELSE 'Unplaced'
END;
【讨论】:
【参考方案2】:像这样使用 sql union
SELECT NULL AS 链接,'Placed' AS 标签,COUNT(*) AS 值 FROM tbl_students 学生 加入 tbl_applications 应用程序使用 (record_number) WHERE applications.status_id IN (3, 4, 7)
联合
SELECT NULL AS 链接,'Unplaced' AS 标签,COUNT(*) AS 值 FROM tbl_students 学生 加入 tbl_applications 应用程序使用 (record_number) WHERE applications.status_id NOT IN (3, 4, 7)
【讨论】:
有使用自连接的替代方法,但为此我需要知道你的表的结构以上是关于为 APEX 饼图放置和未放置的返校学生的主要内容,如果未能解决你的问题,请参考以下文章