私が必要とする目標は、最後の返信が管理者ではなくユーザーからのもので、最後の返信が 10 日以上行われたチケットを取得することです。現在、最後の返信を取得する SQL を使用していますが、管理者からユーザーをフィルタリングするのに苦労しています。私の現在のSQLは次のとおりです。
SELECT
t.tid, tr.reply_date, tr.rid, u.display_name, u.user_type
FROM ticket t
JOIN (
SELECT
tr_last.tid, tr_last.reply_date, tr_last.rid, tr_last.uid
FROM ticket_reply tr_last
ORDER BY tr_last.reply_date DESC
) tr ON tr.tid = t.tid
LEFT JOIN user u ON u.uid = tr.uid
WHERE
t.status != "Closed"
AND DATE_SUB(CURDATE(), INTERVAL 10 DAY) >= tr.reply_date
GROUP BY t.tid;
これは次のようなものを返します。
+-------+---------------------+-------+-----------------------------+-----------+
| tid | reply_date | rid | display_name | user_type |
+-------+---------------------+-------+-----------------------------+-----------+
| 6784 | 2012-03-27 04:11:52 | 40061 | (hidden) | admin |
| 8094 | 2013-01-18 21:13:56 | 65037 | (hidden) | admin |
| 8165 | 2012-09-10 14:59:17 | 52956 | (hidden) | admin |
| 8171 | 2012-06-18 19:05:19 | 46527 | (hidden) | user |
| 8313 | 2012-08-16 23:05:51 | 51362 | (hidden) | admin |
| 8436 | 2012-08-16 23:20:20 | 51368 | (hidden) | admin |
| 8453 | 2012-06-26 23:41:37 | 47247 | (hidden) | admin |
| 8712 | 2012-11-22 10:33:05 | 59697 | (hidden) | user |
| 8911 | 2013-09-24 00:52:27 | 89910 | (hidden) | user |
| 8949 | 2013-09-02 16:29:22 | 87718 | (hidden) | user |
+-------+---------------------+-------+-----------------------------+-----------+
句を追加するu.user_type = "user"
と、取得する行が変更されるため、行のユーザーは管理者ではなくユーザーを表示しますが、そのチケットの最後の返信は実際には管理者です。したがって、この:WHERE
tr
6784
tid
SELECT
t.tid, tr.reply_date, tr.rid, u.display_name, u.user_type
FROM ticket t
JOIN (
SELECT
tr_last.tid, tr_last.reply_date, tr_last.rid, tr_last.uid
FROM ticket_reply tr_last
ORDER BY tr_last.reply_date DESC
) tr ON tr.tid = t.tid
LEFT JOIN user u ON u.uid = tr.uid
WHERE
t.status != "Closed"
AND DATE_SUB(CURDATE(), INTERVAL 10 DAY) >= tr.reply_date
AND u.user_type = "user"
GROUP BY t.tid;
これを返すようになりました:
+-------+---------------------+-------+-----------------------------+-----------+
| tid | reply_date | rid | display_name | user_type |
+-------+---------------------+-------+-----------------------------+-----------+
| 6784 | 2012-03-26 23:19:52 | 40051 | (hidden) | user |
| 8094 | 2013-01-18 18:53:33 | 65016 | (hidden) | user |
| 8165 | 2012-09-07 01:17:28 | 52831 | (hidden) | user |
| 8171 | 2012-06-18 19:05:19 | 46527 | (hidden) | user |
| 8313 | 2012-08-09 18:37:35 | 50776 | (hidden) | user |
| 8436 | 2012-08-16 23:01:28 | 51359 | (hidden) | user |
| 8453 | 2012-06-21 16:29:24 | 46843 | (hidden) | user |
| 8712 | 2012-11-22 10:33:05 | 59697 | (hidden) | user |
| 8911 | 2013-09-24 00:52:27 | 89910 | (hidden) | user |
| 8949 | 2013-09-02 16:29:22 | 87718 | (hidden) | user |
+-------+---------------------+-------+-----------------------------+-----------+
rid
列の値も異なることがわかります。
だから私の質問は、どうすれば適切にユーザーを返すことができますか?