レポートを実行しようとしているテーブルがあります。問題は、同じsession_id
ものを使用すると、すべてのレコードの最初のタイムスタンプのみが選択されることです。
これは私の結果セットです:
+------------+-----------+---------+---------+------------------+---------------+----------+---------------------+----------+
| session_id | anum | first | last | counselor | why | start | Time With Counselor | total |
+------------+-----------+---------+---------+------------------+---------------+----------+---------------------+----------+
| 215 | A00000000 | rixhers | jdjdjdh | Christine McGraw | Appeal | 00:02:20 | 00:00:04 | 00:02:24 |
| 216 | B00000000 | rixhers | jdjdjdh | Dawn Lowe | Loan Question | 00:00:05 | 00:00:03 | 00:00:08 |
| 217 | D00000000 | forthis | isatest | Cherie McMickle | Loan Question | 00:02:08 | 00:00:02 | 00:02:10 |
| 218 | A00000000 | rixhers | jdjdjdh | John Ivankovic | Tap Question | 00:00:42 | 00:00:01 | 00:00:43 |
| 218 | A00000000 | rixhers | jdjdjdh | Christine McGraw | Tap Question | 00:00:42 | 00:00:01 | 00:00:43 |
| 218 | A00000000 | rixhers | jdjdjdh | Tootie | Tap Question | 00:00:42 | 00:00:01 | 00:00:43 |
| 218 | A00000000 | rixhers | jdjdjdh | Front-Kiana | Tap Question | 00:00:42 | 00:00:01 | 00:00:43 |
+------------+-----------+---------+---------+------------------+---------------+----------+---------------------+----------+
7 rows in set (0.00 sec)
session_id
218
すべてのレコードのタイムスタンプが同じであることに注意してください。
各カウンセラーは1つのセッションで作業できるため、タイムスタンプはすべてで異なる必要があるため、主キー(session_id
、 )でグループ化します。Counselor
これは私の質問です:
SELECT
session.session_id,
session.anum,
student.first,
student.last,
c.counselor,
session.why,
SEC_TO_TIME(TIMEDIFF(t.start, session.signintime)) as start,
SEC_TO_TIME(TIMEDIFF(t.fin, t.start)) AS 'Time With Counselor',
SEC_TO_TIME(TIMEDIFF(t.fin, session.signintime)) AS total
FROM session
INNER JOIN student
ON student.anum = session.anum
LEFT JOIN (SELECT support.session_id, support.starttime AS start, support.finishtime AS fin FROM support GROUP BY support.session_id, support.cid) AS t
ON t.session_id = session.session_id
INNER JOIN (select support.session_id, support.cid, counselors.counselor FROM support INNER JOIN counselors ON counselors.cid = support.cid group by support.session_id, support.cid) AS c
ON c.session_id = session.session_id
WHERE session.status = 3
GROUP BY c.session_id, c.cid;
私はここで簡単な何かを逃していますか?
ありがとう、-RaGe
編集番号1:
mysql> SELECT * from support WHERE session_id = 218;
+------------+-----+---------------------+---------------------+-------------------+
| session_id | cid | starttime | finishtime | counselorcomments |
+------------+-----+---------------------+---------------------+-------------------+
| 218 | 1 | 2013-02-06 13:26:40 | 2013-02-06 13:26:41 | |
| 218 | 2 | 2013-02-06 13:26:45 | 2013-02-06 13:26:48 | done |
| 218 | 5 | 2013-02-06 13:26:25 | 2013-02-06 13:26:28 | v |
| 218 | 8 | 2013-02-06 13:26:34 | 2013-02-06 13:26:36 | |
+------------+-----+---------------------+---------------------+-------------------+
4 rows in set (0.00 sec)
番号2を編集:
mysql> SELECT * FROM session;
+------------+-----------+---------------+---------+---------------------+-----------------+--------+
| session_id | anum | why | aidyear | signintime | studentcomments | status |
+------------+-----------+---------------+---------+---------------------+-----------------+--------+
| 215 | A00000000 | Appeal | 12-13 | 2013-02-06 09:01:45 | | 3 |
| 216 | B00000000 | Loan Question | 12-13 | 2013-02-06 09:14:10 | | 3 |
| 217 | D00000000 | Loan Question | 12-13 | 2013-02-06 09:14:57 | | 3 |
| 218 | A00000000 | Tap Question | 12-13 | 2013-02-06 13:25:58 | | 3 |
+------------+-----------+---------------+---------+---------------------+-----------------+--------+
4 rows in set (0.00 sec)
1つのセッションには、必要に応じて多くのサポートチケットがあります。これも私のスキーマの写真です
番号3を編集:
SELECT
s.session_id,
s.anum,
st.first,
st.last,
c.counselor,
s.why,
SEC_TO_TIME(TIMEDIFF(sup.starttime, s.signintime)) as start,
SEC_TO_TIME(TIMEDIFF(sup.finishtime, sup.starttime)) AS 'Time With Counselor',
SEC_TO_TIME(TIMEDIFF(sup.finishtime, s.signintime)) AS total
FROM session s
INNER JOIN student st
ON st.anum = s.anum
INNER JOIN support sup
ON s.session_id = sup.session_id
INNER JOIN counselors c
ON sup.cid = c.cid
WHERE s.status = 3
ORDER BY s.session_id asc;
+------------+-----------+---------+---------+------------------+---------------+----------+---------------------+----------+
| session_id | anum | first | last | counselor | why | start | Time With Counselor | total |
+------------+-----------+---------+---------+------------------+---------------+----------+---------------------+----------+
| 215 | A00000000 | rixhers | jdjdjdh | Christine McGraw | Appeal | 00:02:20 | 00:00:04 | 00:02:24 |
| 216 | B00000000 | rixhers | jdjdjdh | Dawn Lowe | Loan Question | 00:00:05 | 00:00:03 | 00:00:08 |
| 217 | D00000000 | forthis | isatest | Cherie McMickle | Loan Question | 00:02:08 | 00:00:02 | 00:02:10 |
| 218 | A00000000 | rixhers | jdjdjdh | Tootie | Tap Question | 00:00:27 | 00:00:03 | 00:00:30 |
| 218 | A00000000 | rixhers | jdjdjdh | Front-Kiana | Tap Question | 00:00:36 | 00:00:02 | 00:00:38 |
| 218 | A00000000 | rixhers | jdjdjdh | John Ivankovic | Tap Question | 00:00:42 | 00:00:01 | 00:00:43 |
| 218 | A00000000 | rixhers | jdjdjdh | Christine McGraw | Tap Question | 00:00:47 | 00:00:03 | 00:00:50 |
+------------+-----------+---------+---------+------------------+---------------+----------+---------------------+----------+
7 rows in set (0.00 sec)