我無法確定如何查詢某個類別中的每個項目,並且只按日期列出最新的10個項目。這裏是我的表佈局:僅查詢來自父/子類別的指定數量的項目
download_categories
category_id (int) primary key
title (var_char)
parent_id (int)</pre></code>
downloads
id (int) primary key
title (var_char)
category_id (int)
date (date)</pre></code>
我需要查詢的,它可以讓,說一個主要類別的每一個文件,有100個項目和5個孩子類別和只吐出最後10加。我現在有一些功能,只是將所有文件加起來,以便我可以按類別進行計數,但似乎無法修改代碼以僅顯示基於日期的一定數量的項目。
我修改了我用於計算類別及其子項中的所有文件以列出文件的代碼。主要問題是,當我向SQL添加LIMIT子句時,它僅限制從該類別列出的結果,而不是整個查詢。
該代碼將所有下載類別放入數組中,然後循環查看每個使用該category_id下載的下載類別。
我最好的選擇是把結果放在一個數組中,然後從那裏排序?
function list_cat_files($parent, $start) {
global $menu_array;
if($start == 1) {
unset($GLOBALS["total"]);
$query = mysql_query("SELECT * FROM download_categories");
while ($row = mysql_fetch_assoc($query)) {
$menu_array[$row['category_id']] =
array(
'name' => $row['title'],
'parent' => $row['parent_id'],
'category_id' => $row['category_id']);
}
}
foreach($menu_array as $key => $value) {
global $total;
if ($value['parent'] == $parent) {
$category_id = $value['category_id'];
$query1 = mysql_query("SELECT lid AS id, title, date, category_id FROM downloads WHERE category_id='$category_id'");
while($item = mysql_fetch_array($query1)) {
$total .= "--- ($item[lid]) : $item[title] <BR><BR>";
}
list_cat_files($key, 0);
}
}
return $total;
}
類別'是否有100個項目'意味着100個下載記錄有downloads.category_id等於該類別的ID?或者,這100個計數是否也包含屬於該類別的子類別的任何項目?我能否更容易混淆這句話? – webbiedave 2010-05-14 21:05:16
這意味着下載也是在子類別中。 我在想我必須遞歸遍歷每一個項目,並把它放在一個大數組中,然後從那裏排序。 – RogeR 2010-05-14 22:00:58