次のようなマルチレベルのコメントを設定したいと思います。
1 this is the first comment (with 2 replies)
1.1 first reply (with 2 replies)
1.1.1 first reply of first
1.1.2 second reply of first
1.2 second reply (with 1 reply)
1.2.1 first reply of second
2 this is the second comment (with 0 reply)
3 this is the third comment (with 0 reply)
クエリ内のデータをソートするのにかなりクールな drupal メソッドを発見しましたが、コメントの返信数を数える方法がわかりません。1つのSQLクエリでそれが可能かどうかはわかりません。
ここに私のテーブル構造があります:
CREATE TABLE IF NOT EXISTS `mb_post` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`topic_id` int(11) NOT NULL,
`user` int(11) NOT NULL,
`message` text COLLATE utf8_unicode_ci NOT NULL,
`date` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`level` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`parent_post_id` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=0 ;
--
-- Dumping data for table `mb_post`
--
INSERT INTO `mb_post` (`id`, `topic_id`, `user`, `message`, `date`, `level`, `parent_post_id`) VALUES
(1, 99, 10, 'this is the first comment', '2013-10-18 11:00:00', '1', 0),
(2, 99, 20, 'this is the second comment', '2013-10-18 11:10:00', '2', 0),
(3, 99, 30, 'this is the third comment', '2013-10-18 11:20:00', '3', 0),
(4, 99, 20, 'first reply', '2013-10-18 14:30:00', '1.1', 1),
(5, 99, 50, 'first reply of first', '2013-10-18 15:00:00', '1.1.1', 4),
(6, 99, 70, 'second reply of first', '2013-10-18 15:30:00', '1.1.2', 4),
(7, 99, 80, 'second reply', '2013-10-18 14:45:00', '2.1', 2),
(8, 99, 90, 'first reply of second', '2013-10-18 15:15:00', '2.1.1', 7);
ご覧のとおりlevel
、varchar の列があります (複数の 10 進数を使用する他の方法が見つかりませんでした)。
コメントの返信数をカウントする方法はありますか?
どうもありがとうございました!
編集:希望の結果:
id | topic_id | user | message | date | level | parent_post_id | count
1 | 99 | 10 | this is the first comment | 2013-10-18 11:00:00 | 1 | 0 | 2
4 | 99 | 20 | first reply | 2013-10-18 14:30:00 | 1.1 | 1 | 2
5 | 99 | 50 | first reply of first | 2013-10-18 15:00:00 | 1.1.1 | 4 | 0
6 | 99 | 70 | second reply of first | 2013-10-18 15:30:00 | 1.1.2 | 4 | 0
2 | 99 | 20 | this is the second comment| 2013-10-18 11:10:00 | 2 | 0 | 1
7 | 99 | 80 | second reply | 2013-10-18 14:45:00 | 2.1 | 2 | 1
8 | 99 | 90 | first reply of second | 2013-10-18 15:15:00 | 2.1.1 | 7 | 0
3 | 99 | 30 | this is the third comment | 2013-10-18 11:20:00 | 3 | 0 | 0
データはレベルでソートする必要があり、count 列はその直接の子の数の結果である必要があります。例: コメント1
は、レベルを含むすべてのコメントをカウントする必要があります1.1, 1.2, 1.3
が、1.1.1