PHP MySQL查询:匹配两个百分比匹配的表

时间:2013-06-14 07:39:09

标签: php mysql

我有两个有'技能'的表,第一个包含员工的技能,第二个表包含公司的'技能'。

表格员工技能

CREATE TABLE `employee_skills` (
  `e_id` int(8) NOT NULL,
  `skill` int(8) NOT NULL,
  `points` enum('0','25','50','75','100') COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`u_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

表公司技能

CREATE TABLE `company_skills` (
  `c_id` int(8) NOT NULL,
  `skill` int(8) NOT NULL,
  `points` enum('0','25','50','75','100') COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`u_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

因此,如果公司的技能Windows为100分,员工为25分,则匹配百分比为25%。我正在使用以下查询来获得结果:

$result = $connection->prepare("select u_id, skill, points, COUNT(points) from employee_skills");

预期结果应与某些技能相匹配,并返回类似于以下的百分比:

技能|匹配

  • windows | 25%
  • linux | ...%
  • mac | ...%

1 个答案:

答案 0 :(得分:1)

尝试以下:

SELECT e_id, e.skill, c.skill, (e.points/c.points)*100 from employee_skills as e, company_skills as c
WHERE e.skill = c.skill
GROUP BY e.e_id,e.skill

见下文:

SELECT c.skill, total_emp_points, c.points as total, 
(total_emp_points/c.points)*100 as percnt FROM company_skills AS c,
(SELECT e.skill, SUM(e.points) as total_emp_points 
    FROM employee_skills as e 
    GROUP BY e.skill) as emp
WHERE c.skill = emp.skill;

参见 SqlFiddle