親と子を持つsubmissions_comments
テーブルがあり、各子には1:1の関係があり、各parnetには1:多の関係があります。
つまり、すべての親は無制限 (1 レベルの子) を持つことができ、すべての子は 1 つの親のみを持つことができます。
現在のクエリは、特定の送信に対するすべてのコメントを返し、アプリケーションのフロントエンドでネストできるため、正常に動作しますが、ajax ページネーションのオフセットを導入すると、親のみを取得しますそれがオフセットにあり、その特定のオフセットで返されない子コメントが含まれている場合、ネストは機能しません。
オフセット (0,15 15,30 など) を使用して、関連するすべての子コメントを取得するようにクエリを変更するにはどうすればよいですか?
SELECT parent.id,
parent.deleted,
parent.comment,
parent.user_id,
parent.created,
parent.parent_id,
s.user_id submissionUserId,
u.username,
u.photo AS userPhoto
FROM submissions_comments AS parent
LEFT JOIN users u ON parent.user_id = u.id
LEFT JOIN submissions_comments AS child ON child.parent_id = parent.id
LEFT JOIN submissions s ON parent.submission_id = s.id
WHERE parent.submission_id = ?
AND parent.deleted = 0
GROUP BY parent.id
ORDER BY parent.created DESC,
child.created
LIMIT 0,15 // or offset that I pass in from my front-end application.
データ/テーブルの sqlfiddle は次のとおりです。
http://sqlfiddle.com/#!2/924c8
また、これは順不同のデータの例です (たとえば、id
= 5 のコメントは、(最初ではなく) 2 番目の結果セットにある必要があります)。
最初に 0.15 のオフセットを使用します (これは、ページに表示されるデフォルトのコメントの数です):
+-----+---------+-----------------------+---------+---------------------+-----------+------------------+----------+--------------------------------------+
| id | deleted | comment | user_id | created | parent_id | submissionUserId | username | userPhoto |
+-----+---------+-----------------------+---------+---------------------+-----------+------------------+----------+--------------------------------------+
| 21 | 0 | Replying to comment 5 | 2 | 2014-08-08 01:14:42 | 5 | 58 | bobcobb2 | 772187eabd2df8ce62a2f1d59f61eb21.jpg |
| 20 | 0 | .... comment 20 | 1 | 2014-08-08 01:13:31 | NULL | 58 | bobcobb | 935dc24b4529374bc1efcb782411f50e.png |
| 19 | 0 | .... comment 19 | 1 | 2014-08-08 01:13:29 | NULL | 58 | bobcobb | 935dc24b4529374bc1efcb782411f50e.png |
| 18 | 0 | .... comment 18 | 1 | 2014-08-08 01:13:26 | NULL | 58 | bobcobb | 935dc24b4529374bc1efcb782411f50e.png |
| 17 | 0 | .... comment 17 | 1 | 2014-08-08 01:13:23 | NULL | 58 | bobcobb | 935dc24b4529374bc1efcb782411f50e.png |
| 16 | 0 | .... comment 16 | 1 | 2014-08-08 01:13:18 | NULL | 58 | bobcobb | 935dc24b4529374bc1efcb782411f50e.png |
| 15 | 0 | .... comment 15 | 1 | 2014-08-08 01:13:16 | NULL | 58 | bobcobb | 935dc24b4529374bc1efcb782411f50e.png |
| 14 | 0 | .... comment 14 | 1 | 2014-08-08 01:13:13 | NULL | 58 | bobcobb | 935dc24b4529374bc1efcb782411f50e.png |
| 13 | 0 | .... comment 13 | 1 | 2014-08-08 01:13:11 | NULL | 58 | bobcobb | 935dc24b4529374bc1efcb782411f50e.png |
| 12 | 0 | .... comment 12 | 1 | 2014-08-08 01:13:06 | NULL | 58 | bobcobb | 935dc24b4529374bc1efcb782411f50e.png |
| 11 | 0 | .... comment 11 | 1 | 2014-08-08 01:13:05 | NULL | 58 | bobcobb | 935dc24b4529374bc1efcb782411f50e.png |
| 10 | 0 | .... comment 10 | 1 | 2014-08-08 01:13:04 | NULL | 58 | bobcobb | 935dc24b4529374bc1efcb782411f50e.png |
| 9 | 0 | .... comment 9 | 1 | 2014-08-08 01:13:02 | NULL | 58 | bobcobb | 935dc24b4529374bc1efcb782411f50e.png |
| 8 | 0 | .... comment 8 | 1 | 2014-08-08 01:13:00 | NULL | 58 | bobcobb | 935dc24b4529374bc1efcb782411f50e.png |
| 7 | 0 | .... comment 7 | 1 | 2014-08-08 01:12:57 | NULL | 58 | bobcobb | 935dc24b4529374bc1efcb782411f50e.png |
+-----+---------+-----------------------+---------+---------------------+-----------+------------------+----------+--------------------------------------+
次に、ページの [その他のコメントを読み込む...] リンクをクリックして (古い) コメントを取得するときに、オフセット 15,30 を渡します。
+-----+---------+----------------+---------+---------------------+-----------+------------------+----------+--------------------------------------+
| id | deleted | comment | user_id | created | parent_id | submissionUserId | username | userPhoto |
+-----+---------+----------------+---------+---------------------+-----------+------------------+----------+--------------------------------------+
| 6 | 0 | .... comment 6 | 1 | 2014-08-08 01:12:54 | NULL | 58 | bobcobb | 935dc24b4529374bc1efcb782411f50e.png |
| 5 | 0 | .... comment 5 | 1 | 2014-08-08 01:12:51 | NULL | 58 | bobcobb | 935dc24b4529374bc1efcb782411f50e.png |
| 4 | 0 | .... comment 4 | 1 | 2014-08-08 01:12:50 | NULL | 58 | bobcobb | 935dc24b4529374bc1efcb782411f50e.png |
| 3 | 0 | .... comment 3 | 1 | 2014-08-08 01:12:48 | NULL | 58 | bobcobb | 935dc24b4529374bc1efcb782411f50e.png |
| 2 | 0 | .... comment 2 | 1 | 2014-08-08 01:12:47 | NULL | 58 | bobcobb | 935dc24b4529374bc1efcb782411f50e.png |
| 1 | 0 | .... comment 1 | 1 | 2014-08-08 01:12:41 | NULL | 58 | bobcobb | 935dc24b4529374bc1efcb782411f50e.png |
+-----+---------+----------------+---------+---------------------+-----------+------------------+----------+--------------------------------------+