私は、日付範囲内のメンバーを返すレポートを作成するために取り組んでいます。関係(MEMBERS.relationship)列はメンバーの 'M'に等しく、メンバーシップタイプはTHENのいずれかで、この基準に一致するメンバーレコードごとに、CHKINSテーブルから指定された期間のチェックイン数を返す必要があります。チェックインごとにCHKINSテーブルに1つのエントリがあり、 'ischeckin'フィールドを有効なチェックインにするには 'True'に設定する必要があります。言い換えれば、John Doeは指定された期間10回施設にチェックインした。指定されたフィールドに値 '10'を加えた1つの行が返される必要があります。私が今構築しているものは、私に10の別々の行を与えます。テーブルBからの行数(テーブルAからの結果)
SELECT
EMPLOYEES.lname, EMPLOYEES.fname,
MEMBERS.fname AS Expr1, MEMBERS.scancode, MEMBERS.lname AS Expr2,
MEMBERTYPES.description,
MEMBERS.phone1, MEMBERS.phone2, MEMBERS.lastvisit, MEMBERS.email,
MEMBERS.datejoin, MEMBERS.dateexpire, MEMBERS.daterenewal,
CHKINS.checkin, SITES.sitename, MEMBERS.relationship, MEMBERS.mtypeid
FROM
MEMBERS
INNER JOIN
CHKINS ON MEMBERS.memid = CHKINS.memid
INNER JOIN
EMPLOYEES ON MEMBERS.employeeid = EMPLOYEES.employeeid
INNER JOIN
SITES ON MEMBERS.siteid = SITES.siteid
INNER JOIN
MEMBERTYPES ON MEMBERS.mtypeid = MEMBERTYPES.mtypeid
WHERE
(CHKINS.ischeckin = 'True')
AND (CHKINS.checkin BETWEEN @rvStartDate AND DATEADD(day, 45, @rvStartDate))
AND (MEMBERS.relationship = 'M')
AND (MEMBERS.status = 'A')
AND (MEMBERS.mtypeid = '1' OR MEMBERS.mtypeid = '10' OR
MEMBERS.mtypeid = '12' OR MEMBERS.mtypeid = '22' OR
MEMBERS.mtypeid = '28' OR MEMBERS.mtypeid = '32' OR
MEMBERS.mtypeid = '33' OR MEMBERS.mtypeid = '34' OR
MEMBERS.mtypeid = '35' OR MEMBERS.mtypeid = '36' OR
MEMBERS.mtypeid = '40' OR MEMBERS.mtypeid = '48')
AND (MEMBERS.datejoin BETWEEN @rvStartDate AND @rvEndDate)
私は、 'memid'がマッチする' CHKINS'のレコード数を選択するサブクエリが必要であり、 'ischeckin'が' True'である必要があると思います。サブクエリを作成する方法を理解するのに役立つ必要がありますか? – Zack
よろしくお願い致します!私はかなり新しく、まだ学びます。 – Merlin
これはどのRDBMSですか? 'mysql'、' postgresql'、 'sql-server'、' oracle'、 'db2'のどれかを指定するタグを追加してください。 –