0

最後の 100 個のプロファイルについて、各プロファイルの最後のコメントを抽出する必要があります

type==1 の場合、各プロファイルには少なくとも 1 つのコメントがあります

  • type==1 => 会社です
  • type==2 => 人間です

関連するテーブルとデータは次のとおりです。

CREATE TABLE IF NOT EXISTS `comment` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `profile` int(11) NOT NULL,
  `name` varchar(200) NOT NULL,
  `email` varchar(200) NOT NULL,
  `county` int(11) NOT NULL,
  `comment` text NOT NULL,
  `created` int(11) NOT NULL,
  `status` int(11) NOT NULL,
  `verified` int(11) NOT NULL,
  UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

INSERT INTO `comment` (`id`, `profile`, `name`, `email`, `county`, `comment`, `created`, `status`, `verified`) VALUES
(1, 1, 'ANGAJAT 1', 'email 2', 1, 'comm 1', 1335423985, 0, 0),
(2, 3, 'ANGAJAT 2', 'email 4', 1, 'comm 2', 1335424011, 0, 0),
(3, 5, 'ANGAJAT 3', 'email 6', 1, 'comm 3', 1335424037, 0, 0),
(4, 5, 'ANGAJAT 3', 'email 6', 1, 'comm 4', 1335424039, 0, 0);

CREATE TABLE IF NOT EXISTS `profile` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `type` int(11) NOT NULL COMMENT '1 = angajatori ; 2 - angajati',
  `name` varchar(200) NOT NULL,
  `county` int(11) NOT NULL,
  `email` varchar(200) NOT NULL,
  `created` int(11) NOT NULL,
  `comments` int(11) NOT NULL,
  `status` int(11) NOT NULL,
  `verified` int(11) NOT NULL,
  UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;

INSERT INTO `profile` (`id`, `type`, `name`, `county`, `email`, `created`, `comments`, `status`, `verified`) VALUES
(1, 1, 'ANGAJATOR 1', 1, 'email 1', 1335423985, 0, 0, 0),
(2, 2, 'ANGAJAT 1', 1, 'email 2', 1335423985, 0, 0, 0),
(3, 1, 'ANGAJATOR 2', 1, 'email 3', 1335424011, 0, 0, 0),
(4, 2, 'ANGAJAT 2', 1, 'email 4', 1335424011, 0, 0, 0),
(5, 1, 'ANGAJATOR 3', 1, 'email 5', 1335424037, 0, 0, 0),
(6, 2, 'ANGAJAT 3', 1, 'email 6', 1335424037, 0, 0, 0);\

私は試した :

SELECT * 
FROM COMMENT c
JOIN profile p ON p.id = c.profile
GROUP BY c.profile
ORDER BY c.created DESC , p.id ASC 
LIMIT 100

そして私は得ました:

id  profile name    email   county  comment created status  verified    id  type    name    county  email   created comments    status  verified
3   5   ANGAJAT 3   email 6 1   comm 3  1335424037  0   0   5   1   ANGAJATOR 3 1   email 5 1335424037  0   0   0
2   3   ANGAJAT 2   email 4 1   comm 2  1335424011  0   0   3   1   ANGAJATOR 2 1   email 3 1335424011  0   0   0
1   1   ANGAJAT 1   email 2 1   comm 1  1335423985  0   0   1   1   ANGAJATOR 1 1   email 1 1335423985  0   0   0

クエリは、最後の 100 社ごとに最初のコメントを返します。

クエリを手伝ってください

4

1 に答える 1

1

これを試して:

SELECT c.* 
FROM COMMENT c
JOIN 
  (SELECT MAX(created_at) created_at, profile FROM COMMENT
   GROUP BY profile) p ON p.profile = c.profile AND p.created_at = c.created_at
ORDER BY c.created DESC , p.profile ASC 
LIMIT 100

それはトリックを行う必要があります。

于 2012-04-26T08:58:48.533 に答える