我刚刚开始研究这个需要编写的复杂查询,并希望得到有关表结构和实际查询本身的任何建议或反馈。
我已经创建了我的表并填充了测试数据,现在只是想弄清楚MySQL中的可能性和可能性。
以下是问题的概述:
最终结果:根据特定查询标准列出费率(见下文):
Age: [ 27 ]<br>
Spouse Age: [ 25 ]<br>
Num of Children: [ 3 ]<br>
Zip Code: [ 97128 ]
我遇到的问题是每家提供费率的公司都有一种处理费率的独特方式。我正在寻找基于公司的多个查询的最佳方法(一个查询将每个公司的结果或多或少全部合并到一个结果集中)。
以下是一些事实:
首先,我将这种类型的查询称为什么?多个嵌套查询?我应该在其中交织php来确定If()s。
答案 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
.
.
.