我有一个可能是一个简单的问题,但我似乎无法弄清楚如何做到这一点。我正在尝试编写一个查询,计算每个查询的唯一结果数,并将值和查询结果的次数存储到不同的数据库。
以下是我基本上要做的一个例子......
说我有一张桌子'颜色'
+------------+------------+------------+
| id | color | letter |
+------------+------------+------------+
| 1 | blue | a |
| 2 | blue | b |
| 3 | red | a |
| 4 | red | b |
| 5 | green | a |
+------------+------------+------------+
我有一个使用此表运行多次的查询 找到相应的字母和颜色:
$query = ("SELECT * FROM colors WHERE letter = '$someletter'");
$query1 = mysql_query($query);
while($row = mysql_fetch_array($query1)) {
$id = $row['id'];
$color = $row['color'];
};
对于每个查询,我将$ id和$ color变量写入单独的日志文件。
例如,使用上面的查询,$ someletter =“a”。 (调用此查询#1) 结果将是:
+------------+------------+------------+
| id | color | letter |
+------------+------------+------------+
| 1 | blue | a |
| 3 | red | a |
| 5 | green | a |
+------------+------------+------------+
蓝色,红色和绿色各有一个结果。
如果查询是使用$ someletter =“b”运行的(调用此查询#2) 结果集将是:
+------------+------------+------------+
| id | color | letter |
+------------+------------+------------+
| 2 | blue | b |
| 4 | red | b |
+------------+------------+------------+
蓝色和红色都会得到一个结果。
所以查询#1和#2的结果总数:
+------------+------------+------------+
| id | color | totalresult|
+------------+------------+------------+
| 1 | blue | 2 |
| 3 | red | 2 |
| 5 | green | 1 |
+------------+------------+------------+
基本上,我想找出一种方法来计算X个查询的所有唯一结果。因为这个查询将使用不同的变量多次运行,所以我想将结果存储在一个数据库中,该数据库可以有一个颜色列和一个总结果列,如上所示。另外,我只是使用表'color'作为示例,并且实际的唯一条目数将是数百个,因此查询必须适用于此。
我在想某种形式的COUNT或GROUP,但似乎无法连接这些点。
非常感谢任何帮助。
答案 0 :(得分:1)
$query = 'SELECT color, COUNT(letter) totalresult FROM colors GROUP BY color';
这应该给你颜色和它出现的次数(每种颜色)。我遗漏了id
列,因为您无法将行映射到单个ID,因此信息无用。
<强>更新强>
为了存储搜索结果,您可以创建两个表。第一个(search_query)只需要包含一个id和一个varchar列来保存查询。您还可以添加时间戳,以了解人们何时使用搜索选项。
第二个表(search_results)每行包含一个结果。它由第一个表的外键和结果组成。您也可以记录结果行的ID,而不是完整的结果。 (因此,如果有人搜索字母b,您只需要记录颜色ID 2和4.这意味着您需要在search_results表中使用两行。)
如果搜索结果可能来自多个表,则您还需要将表名添加到搜索结果表中。我只想使用varchar列。
答案 1 :(得分:0)
您要使用的是mysql_num_rows($query1);
,它会返回结果中的行数。
答案 2 :(得分:0)
select color, count(id) from color group by color
答案 3 :(得分:0)
我相信你需要2个数据库访问 - 一个用于检索当前总数,另一个用新总数进行更新。