データベースのテーブルに4つのカテゴリがあります。
データベースのすべてのカテゴリから最も訪問された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)
合計を取得することを意味します。 16 articles
4 categories
1つのクエリでそれを実行したいと思います。
通常のクエリ:
$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;