Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从表格中获得尽可能多样的结果_Php_Mysql_Sql - Fatal编程技术网

Php 从表格中获得尽可能多样的结果

Php 从表格中获得尽可能多样的结果,php,mysql,sql,Php,Mysql,Sql,我想根据一些搜索条件从表中检索行。我得到的结果必须满足这些标准,并且还应提供尽可能多样的数据样本。但是,具有相同搜索条件的查询应始终返回相同的示例。因此,在查询中使用RAND()不是解决方案。结果用于显示在PHP驱动的网站上 示例 我有一张有住宿的桌子,例如旅馆、床和早餐或露营地。对于每个住宿,都有额外的信息,如评级、预算、城市和地区。因此,该表基本上如下所示: | id | name | type | rating | budget | city | region

我想根据一些搜索条件从表中检索行。我得到的结果必须满足这些标准,并且还应提供尽可能多样的数据样本。但是,具有相同搜索条件的查询应始终返回相同的示例。因此,在查询中使用
RAND()
不是解决方案。结果用于显示在PHP驱动的网站上

示例

我有一张有住宿的桌子,例如旅馆、床和早餐或露营地。对于每个住宿,都有额外的信息,如评级、预算、城市和地区。因此,该表基本上如下所示:

| id | name   | type    | rating | budget | city         | region  |
|  1 | A Name | Hotel   |      2 |      2 | New York     | East    |
|  2 | B Name | B&B     |      3 |      2 | New York     | East    |
|  3 | C Name | Hotel   |      4 |      3 | New York     | East    |
|  4 | A Name | Hotel   |      3 |      4 | Chicago      | Central |
|  5 | D Name | B&B     |      4 |      3 | Chicago      | Central |
|  6 | E Name | Hotel   |      2 |      2 | Omaha        | Central |
|  7 | F Name | Hotel   |      5 |      4 | Omaha        | Central |
|  8 | G Name | Camping |      2 |      4 | Yosemite     | West    |
我现在需要一个查询,从
region='Central'
获取10个住宿,其中包含尽可能多的城市、尽可能多的住宿类型、便宜的住宿以及昂贵的住宿等等。我不需要一个数学上完美的解决方案,只需要一些一致的东西

想法1

我可以使用几个不同的where子句多次查询表,并混合结果。但是多次查询是web应用程序的一大缺点

创意2


我可以引入一个额外的列
random
,在插入数据时由随机值填充,然后按random进行排序。这个解决方案的缺点是随机性对于我想要完成的任务来说是一个糟糕的启发。

我想你可以做两个查询。一个有
城市分组
,一个没有。第一个查询应该保证有尽可能多的不同城市,而第二个查询是在没有足够的输出时的回退。您可以对数据使用多个GROUP BY语句。按照优先级从左到右排列。如
按城市、预算、评级分组所示