gpt4 book ai didi

MySQL 大师 : How to pull a complex grid of data from MySQL database with one query?

转载 作者:太空宇宙 更新时间:2023-11-03 11:19:12 25 4
gpt4 key购买 nike

希望这没有我想象的那么复杂。

我有一个公司表,另一个工作表,第三个表包含每个公司每个工作中每个员工的单个条目。 注意:有些公司不会在某些职位上雇用员工,而有些公司在某些职位上会有不止一名员工。

公司表有一个companyidcompanyname字段,job表有一个jobidjobtitle字段,员工表有employeeidcompanyidjobidemployeename字段。

我想建一个这样的表:

      +-----------+-----------+-----------+      | Company A | Company B | Company C |------+-----------+-----------+-----------+Job A | Emp 1     | Emp 2     |           |------+-----------+-----------+-----------+Job B | Emp 3     |           | Emp 4     |      |           |           | Emp 5     |------+-----------+-----------+-----------+Job C |           | Emp 6     |           |      |           | Emp 7     |           |      |           | Emp 8     |           |------+-----------+-----------+-----------+

我之前一直在遍历工作的结果集,对于每份工作,循环遍历每家公司的结果集,对于每家公司,循环遍历每个员工并将其打印在表格中(总的来说,但绩效是不应该是一个考虑因素)。该应用程序越来越受欢迎,现在我们有 100 家公司和数百个工作岗位,服务器正在崩溃(所有 id 字段都已编入索引)。

关于如何编写单个查询来获取这些数据有什么建议吗?我不需要公司名称或职位(显然),但我确实需要一些方法来确定结果中每一行的打印位置。我想象一个结果集只包含一长串已加入的员工,我可以编写一个循环来使用 companyidemployeeid 值来告诉我何时创建新的单元格或表格行。只要没有零员工,这就有效;我认为我需要一个 NULL 员工姓名吗?我完全走错路了吗?

提前感谢您的任何想法!

最佳答案

技巧并不在于查询(类似于

SELECT jobtitle, companyname, employeename 
FROM employee AS e
RIGHT JOIN company AS c ON e.companyid = c.companyid
RIGHT JOIN job AS j ON e.jobid = j.jobid
WHERE ...
ORDER BY j.jobtitle, c.companyname

) 作为处理结果的方式。对于每个结果行,当公司发生变化时开始一个新的表格单元格,当职位发生变化时开始一个新的表格行。最棘手的部分是确定何时需要输出结束标记。

关于MySQL 大师 : How to pull a complex grid of data from MySQL database with one query?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2614969/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com