数据库生成结果和php中其他字段的数量

时间:2012-08-08 10:15:40

标签: php mysql database

假设我们的数据库中有一个表格(在实际例子中我们将会有一个简单的表格 更多的表,属性和它们之间的连接)

book(book_id, name, attr1, attr2, attr3)

因此,使用搜索表单,用户创建一个带有get参数的url,这些参数会产生一些结果。 在结果页面的sideSearch表单中,我希望获得符合搜索条件的书名,attr1,attr2等的计数。例如,如果用户想要attr3 ='某事'我想要在我的sideSearch中其他字段的数量,其中包含attr3 ='something'

book_name_1   num_1
book_name_2   num_2
attr1_1       num_1
attr1_2       num_2

在我的应用程序中,book_names和attrs是众所周知的。我能想到的唯一方法是使用

进行for循环(1000-1500次重复)
select count(*) from book where name='book_name_1' and attr3 = 'something'

等。你能想到一个更好的方法吗?我正在使用php。

2 个答案:

答案 0 :(得分:0)

我会用

来做
SELECT name,COUNT(name) FROM book WHERE attr3 = 'something' GROUP BY name
SELECT attr1,COUNT(attr1) FROM book WHERE attr3 = 'something' GROUP BY attr1
SELECT attr2,COUNT(attr2) FROM book WHERE attr3 = 'something' GROUP BY attr2

等。我还将再查询一次结果。所以一般来说,我将在页面中有大约10个查询。在我的应用程序中,我保存$,和$ where部分,所以我不需要再次写它们,否则我考虑使用视图表。如果你想到更好的方法,请评论。

答案 1 :(得分:0)

通过查看mysql FULLTEXT索引并搜索这些字段,您可能会受益匪浅。你没有这么说 - 如果没有其他原因 - 你应该尝试一下,如果它不起作用就打折它。 http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html

我在多次搜索中取得了成功,我们进行了全文搜索,然后如果发现的结果少于n个,我们就会将tag = style搜索作为替代。