対話する必要がある 2 つのテーブルを持つ 1 つのデータベースがあります。最初のテーブルはメンバー テーブル ( login
) で、ID ( id
)、名 ( given_name
)、姓 ( ) がありfamily_name
ます。2 番目のテーブルには、ISO 8601 文字列でのログインまたはメンバー ID ( mid
) の出勤 ( dateTimeIn
) と退勤 ( ) の日付時刻、およびユーザーが実行できるアクティビティの種類 ( ) が保持されます。&は両方とも ISO 8601 日時フィールドであり、 、、、およびすべて文字列です。これら 2 つのテーブルをバインドするリモート外部キーは、ディレクトリを列にマップするものです。dateTimeOut
type
dateTimeIn
dateTimeOut
type
id
mid
given_name
family_name
hours.mid
login.id
login
テーブル:
CREATE TABLE login(id TEXT PRIMARY KEY NOT NULL, given_name TEXT NOT NULL, family_name TEXT NOT NULL, lastseen INTEGER NOT NULL)
id |given_name|family_name
-----------------------------------------------
103673125444466670779|Mark |Tomlin
hours
テーブル:
CREATE TABLE hours(mid TEXT, type TEXT, dateTimeIn INTEGER, dateTimeOut INTEGER)
mid |type |dateTimeIn |dateTimeOut
-----------------------------------------------------------------
103673125444466670779|Meeting |2013-06-04T20:00|2013-06-04T21:00
103673125444466670779|Meeting |2013-06-10T20:00|2013-06-10T21:00
103673125444466670779|Crew |2013-06-21T22:00|2013-06-22T13:00
103673125444466670779|Crew |2013-06-22T23:00|2013-06-23T07:00
103673125444466670779|Training|2013-06-23T20:00|2013-06-23T21:00
103673125444466670779|Crew |2013-06-29T23:00|2013-06-30T07:00
103673125444466670779|Detail |2013-06-23T17:00|2013-06-23T19:00
103673125444466670779|Meeting |2013-06-25T14:00|2013-06-25T18:00
103673125444466670779|Detail |2013-06-28T01:00|2013-06-28T08:00
103673125444466670779|Crew |2013-06-28T19:00|2013-06-28T23:00
私が探しているのは、指定した日付範囲に対して以下の表を提供するクエリです。たとえば、2013 年 6 月の場合、次のようになります。もっと多くの人がログインしている場合は、姓、名でソートして下に追加します。
given_name|family_name|Crew|Meeting|Detail|Training
Mark |Tomlin |35 |6 |9 |1
もう 1 つのすばらしいクエリは、年ビューを取得できれば、メンバーが追加されるたびに新しい行になります。
given_name|family_name|Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec
Mark |Tomlin |35 |62 |27 |12 |88 |35 | - | - | - | - | - | -