我在数据库的表中有4 个类别。
我想从数据库中的每个类别中获取访问次数最多的四篇文章。
这意味着得到(4 articles most visited from category1)
+ (4 articles most visited from category2)
+ (4 articles most visited from category3)
+ (4 articles most visited from category4)
= Total 16 articles
from 4 categories
。
我想通过一个查询来做到这一点。
普通查询:
$sql="select ID,name,country from article where `active`='yes' order by `visit` desc limit 16 ";
文章表结构:
CREATE TABLE `article` (
`ID` int(11) NOT NULL auto_increment,
`name` varchar(255) NOT NULL default '',
`country` varchar(50) NOT NULL default '',
`town` varchar(30) NOT NULL default '',
`other_town` varchar(30) NOT NULL default '',
`title` varchar(255) NOT NULL default '0',
`size` varchar(30) NOT NULL default '',
`type` varchar(30) NOT NULL default '',
`tel` varchar(30) NOT NULL default '',
`mobile` varchar(30) NOT NULL default '',
`connect` varchar(30) NOT NULL default '',
`email` varchar(30) NOT NULL default '',
`photo1` varchar(100) NOT NULL default '',
`print` varchar(30) NOT NULL default '',
`small_pic1` varchar(100) NOT NULL default '',
`detail` text NOT NULL,
`add_by` int(11) NOT NULL default '0',
`cat` int(11) NOT NULL default '0',
`goods_type` enum('new','old') NOT NULL,
`add_date` date NOT NULL default '0000-00-00',
`end_date` date NOT NULL default '0000-00-00',
`period` varchar(30) NOT NULL default '',
`visit` int(11) NOT NULL default '0',
`comment` int(30) NOT NULL default '0',
`fav` varchar(15) NOT NULL default '',
`favorite` varchar(15) NOT NULL default '',
`active` varchar(15) NOT NULL default '',
`rate` int(11) NOT NULL default '0',
`short` text NOT NULL,
`add_to` varchar(50) NOT NULL default '',
`author` varchar(50) NOT NULL default '',
`author_img` varchar(50) NOT NULL default '',
`lang` varchar(10) NOT NULL default '',
`budget` varchar(50) NOT NULL default '',
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;
类别表结构:
CREATE TABLE `category` (
`ID` int(11) NOT NULL auto_increment,
`name` varchar(255) NOT NULL default '',
`img` varchar(255) NOT NULL default '',
`sub` int(11) NOT NULL default '0',
`type` varchar(20) NOT NULL default '',
`lang` varchar(10) NOT NULL default '',
`active` varchar(25) NOT NULL default '',
`add_by` int(11) NOT NULL default '0',
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;