【发布时间】:2017-06-05 14:51:33
【问题描述】:
(这个问题是基于我的另一个问题here)
我的数据库中有四个表:
-
Users(列id,dept_id) -
Departments(列id,deptStringName) -
Absences(列id、user_id、type_id) -
Absence_types(列id,stringName)
目前Departments 表中有 10 行,Absence_types 表中有 12 行。
我正在尝试获取一个查询,该查询输出十个表,每个部门一个,缺勤类型及其计数在名称旁边,例如,对于 IT 部门:
+-----------+---+
| Sickness | 4 |
| Paternity | 7 |
| Maternity | 3 |
| ... | 6 |
+-----------+---+
我知道获取这些结果的查询。但是,我想知道从软件工程的角度来看,最佳实践是什么:我是否像在查询中所做的 (dept.id = 1) 那样在WHERE 子句中硬编码值下面?
SELECT COUNT(abs.id) as AbsenceCount , absence_types.description FROM Absences abs JOIN Users u on u.id = abs.user_id JOIN Departments dept on dept.id = u.dept_id JOIN Absence_types on Absence_types.id = abs.type_id WHERE dept.id = 1 group by dept.description
或者我是否使用其他方式来获取部门的 ID?我想不出一种方法可以编写一个 Laravel 脚本来知道有多少个部门,然后每个部门运行一个查询。
编辑:示例结果可能如下所示(理想情况下),X、Y、Z 部门的 A、B、C 缺席类型
+---+---+---+---+
| | A | B | C |
+---+---+---+---+
| X | 4 | 8 | 5 |
| Y | 7 | 9 | 4 |
| Z | 5 | | |
+---+---+---+---+
【问题讨论】:
-
您是否尝试过在您的部门中使用
foreach循环? -
@PaulSpiegel 我犹豫是否这样做,因为查询是由视图端的图表呈现代码调用的。该代码需要每个查询使用
->调用一次实例成员,即上述Department调用 10 次 -
您想要一个查询所有部门?
-
如果可能的话,是的。类似于 2 维表,列上有 Absence_types,行上有 Departments
-
你能在你的问题中添加一个示例结果吗?