我正在寻找一个更干净的方法来做到这一点。我的代码可以工作,但我知道它可以更好。我有三个表:一个是类别组列表,一个是链接到类别组的类别列表,另一个是链接到类别的新闻故事列表。
我有三个表格:类别组、类别、新闻。
$result = mysql_query( '
SELECT cat_group_id, cat_group_name FROM CategoryGroups
' );
第二个查询位于第一个查询的循环结果内,查找包含新闻项且链接到特定类别组的所有类别:
<?php
while( $row = mysql_fetch_assoc( $result ) ){
$id = $row['cat_group_id'];
$name = $row['cat_group_name'];
echo "<h3>$name</h3>";
$sql = mysql_query("
SELECT category_id, title FROM `Categories`
WHERE cat_group_id = $id
AND category_id IN
(SELECT news.category_id FROM news)
");
while( $row = mysql_fetch_assoc($sql) ) {
$title = $row['title'];
$catid = $row['category_id'];
$numbers = mysql_query("
SELECT * FROM news
WHERE category_id =$catid"
);
$nums = mysql_num_rows($numbers);
echo "$title ($nums)<br/>\n";
}
?>
考虑到效率,我想把这个问题限制为一到两个查询。我知道这是可以做到的,但是我的尝试没有成功。