在MySQL中为查询返回的每一行调用一个查询
我有一个问题,对于“employee”表中的每个员工,我需要调用“KPI”表中的SELECT查询。我使用游标读取“employee”表中的每个值:在MySQL中为查询返回的每一行调用一个查询,mysql,mariadb,Mysql,Mariadb,我有一个问题,对于“employee”表中的每个员工,我需要调用“KPI”表中的SELECT查询。我使用游标读取“employee”表中的每个值: DELIMITER $$ CREATE PROCEDURE sp6 () BEGIN DECLARE finished INTEGER DEFAULT 0; DECLARE temp varchar(100) DEFAULT ""; DEClARE cs1 CURSOR FOR SELECT `full_name` FROM
DELIMITER $$
CREATE PROCEDURE sp6 ()
BEGIN
DECLARE finished INTEGER DEFAULT 0;
DECLARE temp varchar(100) DEFAULT "";
DEClARE cs1 CURSOR FOR SELECT `full_name` FROM `employee`;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET finished = 1;
OPEN cs1;
fLoop: LOOP
FETCH cs1 INTO temp;
IF finished = 1 THEN
LEAVE fLoop;
END IF;
[FROM KPI TABLE, QUERY TO GET KPI OF EMPLOYEE WITH NAME 'temp']
END LOOP fLoop;
CLOSE cs1;
END$$
DELIMITER;
但我得到了错误信息:
谁能帮我一下我哪里做错了?谢谢。这里不需要光标。只需在
全名
上加入KPI
和员工
SELECT k.*
FROM `KPI` k
INNER JOIN `employee` e
ON e.`full_name` = k.`full_name`;
为什么需要使用光标来执行此操作,它可能只是一个select查询。选择*FROM
KPI
AS k internal JOINemployee
AS e ON k.full\u name
=e.full\u name
谢谢,我需要计算每个员工的KPI,我的想法是使用光标标识每个员工,并将此值传递给SELECT查询进行计算。我如何使用innerjoin做到这一点?如果您每个员工都有许多KPI,那么您想要哪一个,以及如何识别它们(按日期、完成、进行中、今年)?谢谢您,使用innerjoin,您将拥有同一员工的许多记录,我如何计算每个员工的KPI?我的想法是使用游标标识每个员工,并将此值传递给SELECT查询进行计算。@Joe:是的,如果在KPI
中有更多的员工记录,您将获得更多的记录。但在游标方法中也是如此。