【发布时间】:2016-03-25 06:43:21
【问题描述】:
我正在使用 Codeigniter 开发一个保险比较平台。 我有一个如下所示的包表:
+----------+--------------+------------+---------------------+-------------+
| tpckg_id | tpckg_people | tpckg_days | tpckg_policy_amount | tp_name |
+----------+--------------+------------+---------------------+-------------+
| 21 | individual | 10 | 1000 | Test25 |
| 22 | family | 7 | 2000 | Testing |
| 23 | individual | 20 | 600 | TPL Care |
| 24 | family | 10 | 1000 | TPL Care |
| 25 | individual | 15 | 650 | Travel Care |
| 26 | family | 10 | 1100 | TPL Care |
| 27 | individual | 7 | 500 | TPL Care |
| 28 | family | 7 | 1200 | Travel Care |
| 29 | family | 10 | 500 | TPL Care 2 |
| 30 | individual | 11 | 500 | TPL Care |
+----------+--------------+------------+---------------------+-------------+
现在,我正在使用此查询获取数据:
$this->db->select('travel_packages.tpckg_id, travel_packages.tpckg_people, travel_packages.tpckg_days, travel_packages.tpckg_policy_amount, travel_products.tp_name');
$this->db->from('travel_packages');
$this->db->join('travel_products', 'travel_products.tp_id = travel_packages.tpckg_products_id')
$this->db->where('travel_packages.tpckg_people', 'Individual');
$this->db->where('travel_packages.tpckg_days >= 10');
$this->db->group_by('travel_packages.tpckg_policy_amount');
$this->db->order_by('travel_packages.tpckg_policy_amount', 'ASC');
正如预期的那样,返回所有 tpckg_people = individual 和 tpckg_days >= 10 的记录 像这样:
+----------+--------------+------------+---------------------+-------------+
| tpckg_id | tpckg_people | tpckg_days | tpckg_policy_amount | tp_name |
+----------+--------------+------------+---------------------+-------------+
| 21 | individual | 10 | 1000 | Test25 |
| 23 | individual | 20 | 600 | TPL Care |
| 25 | individual | 15 | 650 | Travel Care |
| 30 | individual | 11 | 500 | TPL Care |
+----------+--------------+------------+---------------------+-------------+
如果没有与用户输入的数字相同,我希望它返回的只是第一个更大的天数。例如,如果用户输入 9 作为天数,而我没有包含 9 天的包裹,它应该返回每个产品的第一个更大的天数。
像这样:
+----------+--------------+------------+---------------------+-------------+
| tpckg_id | tpckg_people | tpckg_days | tpckg_policy_amount | tp_name |
+----------+--------------+------------+---------------------+-------------+
| 21 | individual | 10 | 1000 | Test25 |
| 25 | individual | 15 | 650 | Travel Care |
| 30 | individual | 11 | 500 | TPL Care |
+----------+--------------+------------+---------------------+-------------+
请帮忙查询一下?提前致谢。 :-)
【问题讨论】:
-
根据您想要的结果,我认为首先按 tpckg_policy_amount 排序,然后按 tp_name 而不是 tpckg_policy_amount 分组,您应该会得到想要的结果....
-
是的。按 tpckg_policy_amount 分组显然很奇怪
-
那是为了不同的目的,从低到高显示数量。我不应该将它包含在示例中。
标签: php mysql codeigniter