我準備一個SQL查詢來獲取一個簡單的論壇的最新話題,我有以下規定:獲得10最新帖子
CREATE TABLE IF NOT EXISTS `f_categoria` (
`id_categoria` int(4) NOT NULL,
`name` varchar(20) NOT NULL,
`desc` varchar(50) NOT NULL,
`id_foro` int(3) NOT NULL,
`estado` int(1) NOT NULL,
`visibilidad` int(2) NOT NULL,
PRIMARY KEY (`id_categoria`),
KEY `id_categoria` (`id_categoria`),
KEY `id_foro` (`id_foro`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `f_categoria` (`id_categoria`, `name`, `desc`, `id_foro`, `estado`, `visibilidad`) VALUES
(1, 'Programacion', 'Programacion', 1, 1, 1),
(2, 'Modelado', 'Modeladoen 3d', 1, 1, 1);
-- --------------------------------------------------------
CREATE TABLE IF NOT EXISTS `f_comentario` (
`id_comentario` bigint(20) NOT NULL AUTO_INCREMENT,
`id_post` bigint(20) NOT NULL,
`id_user` bigint(20) NOT NULL,
`contenido` longtext NOT NULL,
`number` int(4) NOT NULL,
`fecha` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id_comentario`),
KEY `id_post` (`id_post`),
KEY `id_user` (`id_user`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;
INSERT INTO `f_comentario` (`id_comentario`, `id_post`, `id_user`, `contenido`, `number`, `fecha`) VALUES
(1, 1, 1, 'Este es el primer comentario', 1, '2013-07-30 23:12:53'),
(2, 1, 1, 'Este es el comentario 2', 2, '2013-07-30 23:25:12'),
(3, 2, 1, 'cOMENTARIO EN EL POST2', 1, '2013-07-30 23:53:44');
-- --------------------------------------------------------
CREATE TABLE IF NOT EXISTS `f_foro` (
`id_foro` int(5) NOT NULL,
`name` varchar(15) NOT NULL,
`desc` varchar(50) NOT NULL,
`visibilidad` int(2) NOT NULL,
PRIMARY KEY (`id_foro`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `f_foro` (`id_foro`, `name`, `desc`, `visibilidad`) VALUES
(1, 'Prueba', 'Foro de prueba', 1);
-- --------------------------------------------------------
CREATE TABLE IF NOT EXISTS `f_post` (
`id_post` bigint(20) NOT NULL AUTO_INCREMENT,
`id_user` bigint(20) NOT NULL,
`titulo` varchar(50) NOT NULL,
`contenido` longtext NOT NULL,
`fecha` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`estado` int(1) NOT NULL,
`id_categoria` int(4) NOT NULL,
PRIMARY KEY (`id_post`),
KEY `id_user` (`id_user`),
KEY `id_categoria` (`id_categoria`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;
INSERT INTO `f_post` (`id_post`, `id_user`, `titulo`, `contenido`, `fecha`, `estado`, `id_categoria`) VALUES
(1, 1, '¡Hola!', 'mensaje de prueba', '2013-07-30 23:12:05', 1, 1),
(2, 1, 'post 2', 'es el post2', '2013-07-30 23:27:25', 1, 2),
(3, 1, 'post3', 'el post3', '2013-07-31 00:04:52', 1, 1);
-- --------------------------------------------------------
CREATE TABLE IF NOT EXISTS `f_user` (
`id_user` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(15) NOT NULL,
`mail` varchar(50) NOT NULL,
`fecha` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id_user`),
UNIQUE KEY `name` (`name`,`mail`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
--
-- Volcado de datos para la tabla `f_user`
--
INSERT INTO `f_user` (`id_user`, `name`, `mail`, `fecha`) VALUES
(1, 'tulipo', '[email protected]', '2013-07-30 23:07:36');
ALTER TABLE `f_categoria`
ADD CONSTRAINT `f_categoria_ibfk_1` FOREIGN KEY (`id_foro`) REFERENCES `f_foro` (`id_foro`);
ALTER TABLE `f_comentario`
ADD CONSTRAINT `f_comentario_ibfk_2` FOREIGN KEY (`id_user`) REFERENCES `f_user` (`id_user`),
ADD CONSTRAINT `f_comentario_ibfk_1` FOREIGN KEY (`id_post`) REFERENCES `f_post` (`id_post`);
ALTER TABLE `f_post`
ADD CONSTRAINT `f_post_ibfk_2` FOREIGN KEY (`id_categoria`) REFERENCES `f_categoria` (`id_categoria`),
ADD CONSTRAINT `f_post_ibfk_1` FOREIGN KEY (`id_user`) REFERENCES `f_user` (`id_user`);
我怎樣才能使查詢檢索的最新訊息,但考慮到最後的意見?
這給了我最新的評論
select id_post,id_user,contenido,fecha from f_comentario group by id_post order by fecha DESC
而且與過去後,
select id_post,id_user,contenido,fecha from f_post order by fecha DESC
我不得不加入這兩個查詢,然後在最近10個id_post組他們(日期)...
有人給我一隻手?謝謝,並問候
根據反引號猜到'mysql',但如果錯誤請重新標記正確數據庫系統。 –