基于一系列ifs运行多个MySQL查询

时间:2011-01-15 04:56:08

标签: php mysql

我刚刚开始研究这个需要编写的复杂查询,并希望得到有关表结构和实际查询本身的任何建议或反馈。

我已经创建了我的表并填充了测试数据,现在只是想弄清楚MySQL中的可能性和可能性。

以下是问题的概述:

最终结果:根据特定查询标准列出费率(见下文):

Age: [ 27 ]<br>
Spouse Age: [ 25 ]<br>
Num of Children: [ 3 ]<br>
Zip Code: [ 97128 ]

我遇到的问题是每家提供费率的公司都有一种处理费率的独特方式。我正在寻找基于公司的多个查询的最佳方法(一个查询将每个公司的结果或多或少全部合并到一个结果集中)。

以下是一些事实:

  • 每家公司都会处理有助于查询结果的邮政编码范围。
  • 根据申请人,配偶,子女数量,每家公司都有不同的计算费率的方法:例如,
  • 公司A 通过以下方式确定费率:申请人+配偶+子女(人)=费率(年龄与申请人在一定范围内相关)。
  • 公司B 根据申请人总数确定费率:1,2,3,4,5,6 + =费率(并忽略年龄)。

首先,我将这种类型的查询称为什么?多个嵌套查询?我应该在其中交织php来确定If()s。

3 个答案:

答案 0 :(得分:0)

它只有2个(或多个)查询。不称为任何特殊或技术。如果您有3家公司,那么您只需要进行3次查询。你不会在查询中想要一堆逻辑。有些是好的,但有时候用PHP比用MySQL做得更好。有时3个查询优于1个。

你将使用php来构建它。您将执行每个查询,然后将结果集构建为数组。运行所有3个查询后,您将添加到结果输出数组3次。然后循环并显示它。

本着给予你想要的东西的精神,你可能会看到联合查询。基本上你通过union加入 n 单独的查询,它们都返回相同的字段,你可以将它作为一个结果循环遍历,并一次性从mysql获取所有数据。

修改

在回复你的评论时,这里有一些伪代码可以帮助你找到正确的方向。

query for company 1
loop through results
  put values needed for display in array

query for company 2
loop through results
  put values needed for display in array

loop through array
  print results

答案 1 :(得分:0)

假设没有很多公司并且计算不是特别复杂,您应该能够使用CASE语句编写一个相当可维护的查询,该语句根据公司类型执行不同的计算。

答案 2 :(得分:0)

您应该能够在SQL中完成所有计算。这看起来像是使用存储过程的好方案,您可以使用每个公司所需的各种方法收集所有数据并返回结果集。

select [calculate rate] rate from company1_table
union all
select [calculate rate2] rate from company2_table
.
.
.
相关问题