我有一页在表中列出记录。在表的标题中,我们有筛选器,用于筛选所选值的记录。为了填充这些筛选列表,我需要从数据库中获得不同的值。例如,当列出一家公司的员工时,让我们说我有姓名、年龄和薪水的筛选器,然后我有一些单独的查询,例如
select distinct name from employee where company = `fordwagen`如何才能在一个SQL中获得所有三个名称、年龄和薪水的列表,而不需要调用三个数据库?
发布于 2017-10-19 11:38:29
会有那么多重复的名字吗?一家全是史密斯夫妇的公司?可能不会。
所以很简单
select first_name, last_name, age, salary from employees;比如说1000名员工的记录,而不是250个名字,700个姓氏,30个年龄,120个薪水。然后循环遍历你的应用程序中的记录,这样你就可以用尽可能少的流量完成了。
发布于 2017-10-18 21:39:15
select name as filter_value, 'name_filter' as filter_type from employee group by name
union
select ages as filter_value, 'age_filter' as filter_type from employee group by ages
union
select salary as filter_value, 'salary_filter' as filter_type from employee group by salarygroup by将具有与distinct相同的效果,您可以使用任何一种语法。这给出了as filter_value和filter type的列表。使用正确的filter_type填充每个筛选器列表。
希望我得到了你想要的,如果我走了,right...comment
发布于 2017-10-19 11:18:36
无论您发出10次单独的呼叫还是一次联合呼叫,网络流量--数据包的数量--将大致相同。
好吧。但这更多的是如何设计应用程序层的问题。
你似乎对“更干净的代码”有着不同寻常的理解。单一责任原则(固体中的S)是清洁代码的基石。有十种方法,其中一种做一件事,比一种做十件事的方法干净。
也许你需要的是一个缓存?如果过滤器的目标表变化相对较慢,则结果集缓存可能非常有效。Oracle支持数据库和客户端的缓存(内置无效)。了解更多信息。即使目标表确实经常更改,也可以维护更静态的筛选器表。
https://stackoverflow.com/questions/46819570
复制相似问题