0

(MySql エンジン) 「連絡先」と呼ばれるクラブのスタッフとメンバー間の連絡先を記録するテーブルがあります。全期間中の連絡の前後にメンバーがログインした平均回数を比較することにより、最新の連絡がメンバーの出席にプラスの効果をもたらしたかどうかを知る必要があります。ログインは logins テーブルに格納されます。ユーザー情報は users テーブルに保存されます。

次の sql ステートメントは、期間中に少なくとも 1 つの連絡先があったクラブ メンバーのクラブ メンバーごとに、ログインごと (1 日 1 回) の行で個々の行を引き出します。私が立ち往生しているのは、メンバーごとの前後の maxcontactdate のログインの総数を見つけることです。

したがって、結果のテーブルには、recid fk_staff_users_recid でグループ化された行を含む列が必要です

"recid"、"maxcontactdate"、"fk_staff_users_recid"、"pre_maxcontactdate_login_count"、"post_maxcontactdate_login_count"

誰か助けてくれませんか?

SELECT
  recid,
  maxcontactdate,
  fk_staff_users_recid,
  logtime
FROM
(
  /* Selects user id, with the staff that made the contact, and the max contact date for that member of staff */
  SELECT fk_users_recid,
          fk_staff_users_recid,
          MAX(contactdate) AS maxcontactdate
  FROM
    contacts
  WHERE
    contactdate BETWEEN '2013-07-20' AND '2013-08-20'
  GROUP BY fk_users_recid, fk_staff_users_recid
)contacts,
users

JOIN
(
  /* Selects all login dates between the dates specified */
  SELECT fk_users_recid,
         DATE(logins.logintime) AS logtime
  FROM
    logins
  WHERE
    logintime BETWEEN '2013-07-20' AND '2013-08-20'
  GROUP BY fk_users_recid, logtime
)logins
ON logins.fk_users_recid = users.recid 

/* Only pull the members who had contacts during the period */
WHERE
users.recid = contacts.fk_users_recid 
4

1 に答える 1