0

学校向けのブログを作成しています。作成したスレッドごとのコメント数を表示したいと思います。しかし、私はこの目標を達成する方法に少し迷っています。どんな助けでも大いに感謝します!

私は2つのテーブルを持っています

CREATE TABLE `blog_message` (
  `MessageID` int(30) NOT NULL AUTO_INCREMENT,
  `Username` varchar(45) NOT NULL,
  `Message` text,
  `AddedDate` datetime DEFAULT NULL,
  `Title` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`MessageID`)
)


CREATE TABLE `blog_comments` (
  `CommentID` int(30) NOT NULL AUTO_INCREMENT,
  `MessageID` int(30) DEFAULT NULL,
  `Author` varchar(45) DEFAULT NULL,
  `CommentMessage` text,
  `AddedDate` datetime DEFAULT NULL,
  PRIMARY KEY (`CommentID`),
  KEY `blog_comments_ibfk_1` (`MessageID`),
  CONSTRAINT `blog_comments_ibfk_1` FOREIGN KEY (`MessageID`) REFERENCES `blog_message` (`MessageID`)
)

私の目標は

グリッドビューで表示する

intテーブル形式コメント数| タイトル| ユーザー名| 作成日

4

2 に答える 2

1

以下はMySQLの構文ですが、何を使用しているかわかりません。ただし、これにより、MessageIdのリストとコメントの数が返されます。

----------------------------
| MessageId | comment_count|
----------------------------
| 1234      | 34           |
----------------------------

SELECT bm.MessageId, count(bc.CommentId) as comment_count
FROM blog_comments bc, blog_message bm
WHERE bm.MessageId = bc.MessageId
GROUP BY bm.MessageId

AuthorとAdditionedDateが必要な場合は、SELECTステートメントに追加するだけです(つまりSELECT bm.MessageId, count(bc.CommentId) as comment_count, bm.AddedDate, bm.Author)。

于 2012-07-20T00:54:37.603 に答える
0

次を試してください

SELECT 
    bm.MessageID, Count(bc.CommentID) as Cnt, Title, Username, AddedDate
FROM blog_message bm
LEFT OUTER JOIN blog_comments bc
     ON bm.MessageID = bc.MessageID
GROUP BY bm.MessageID,Title, Username, AddedDate
于 2012-07-20T01:26:44.787 に答える