我正在运行此查询以查看每个类别中有多少问题:
$query = "SELECT category_table_id, COUNT(question) AS nbr FROM question GROUP BY category_table_id ORDER BY nbr";
然后我手动添加和删除问题表中的行。然后我再次运行查询进行比较。 然后,我如何获得具有新行数的类别中添加或删除的行数?
非常感谢
答案 0 :(得分:1)
将您的第一个结果存储在某个地方(比如回到数据库中),进行手动数据库编辑,重新查询,比较旧(存储)和新(查询)。
答案 1 :(得分:1)
由于问题的添加和删除发生在同一个脚本上,最简单的方法是将第一个结果以($category_table_id => $num_questions)
的形式存储在数组中,在第二个查询中,减去第一个查询的结果。
将其翻译为代码:
mysql_connect(...);
$read_category_counts_query = "SELECT category_table_id, COUNT(question) AS nbr FROM question GROUP BY category_table_id ORDER BY nbr";
function read_category_counts() {
$result = mysql_query($read_category_counts_query);
$counts = array();
while ($row = mysql_fetch_assoc($result)) {
$counts[$row['category_table_id']] = $row ['nbr'];
}
mysql_free_result($result);
return $counts;
}
function compare_category_counts($before, $after) {
$difference = array();
foreach ($before as $key => $val) {
if (!isset($after[$key]) $after[$key] = 0;
}
foreach ($after as $key => $val) {
if (!isset($before[$key]) $before[$key] = 0;
$diff_val = $val - $before[$key];
if ($diff_val != 0) {
$difference[$key] = $diff_val;
}
}
return $difference;
}
$initial_count = read_category_counts();
// do something ...
$current_count = read_category_counts();
$differences = compare_category_counts($initial_count, $current_count);
答案 2 :(得分:0)
如果我正确理解了您的问题,您希望在表类别中记录某些更改。要获得插入和删除记录的列表,可以在表中放置一些标记以标记删除或插入。您还可以使用日期时间字段来确定更改的确切时刻以供将来使用。 (例如每日报告)
答案 3 :(得分:0)
如果我明白这一点,你想要新添加或删除的行数量?如果在同一页面上需要此号码,您可以将金额保存在临时变量中,然后执行添加和删除操作,并将新金额与旧金额进行比较,发现已添加或删除的金额。
如果您只想显示最近添加的问题,则应添加added
列,其中包含添加问题的时间戳,以便您可以查询自给定时刻以来的所有新问题。