1

インターンシップに参加している学生とそうでない学生の数を示す APEX 円グラフのクエリを作成しようとしています。

students主キーを持つrecord_numberテーブルと、を指す外部キーを持つアプリケーション テーブルがありますrecord_number。applications テーブルには、値であるフィールドstatus_idがあり、学生がインターンシップに配置されている場合、その他の値はインターンシップに配置されていないことを意味します。347

これは、インターンシップに配置された人を正常に表示するこれまでの私のクエリです。

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)

これにより、インターンシップに配置された学生の数を示す 1 行が正常に返されますが、インターンシップに配置されていない学生の数を示すもう 1 行を返す必要がありますが、これらの 3 つのフィールド ( linklabelおよびvalue)しかありません。 .

例を挙げると、データベースに 10 人の学生がいて、そのうち 4 人がインターンシップに参加している場合、クエリは次の行を返す必要があります。

link    |    label    |    value
---------------------------------
(null)  | Placed      | 4
(null)  | Unplaced    | 6

どんな助けでも大歓迎です。

4

2 に答える 2

1

以下は、tbl_studentsごとにtbl_applicationsにレコードが1つだけあることを前提としています。

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;
于 2012-12-05T08:17:23.923 に答える
0

このようにSQLユニオンを使用します

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)

連合

SELECT NULL AS link, 'Unplaced' AS label, COUNT(*) AS value FROM tbl_students students JOIN tbl_applications applications USING (record_number) WHERE applications.status_id NOT IN (3, 4, 7)

于 2012-12-05T04:30:30.417 に答える