2024-01-15 11:31:03 +00:00
|
|
|
DELIMITER $$
|
2024-08-20 08:06:10 +00:00
|
|
|
CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`client_RandomList`(vNumber INT)
|
2024-01-15 11:31:03 +00:00
|
|
|
BEGIN
|
|
|
|
|
|
|
|
DECLARE i INT DEFAULT 0;
|
|
|
|
DECLARE c INT DEFAULT 0;
|
|
|
|
DECLARE maxClientFk INT;
|
|
|
|
|
|
|
|
DROP TEMPORARY TABLE IF EXISTS tmp.client;
|
|
|
|
|
|
|
|
CREATE TEMPORARY TABLE tmp.`client`
|
|
|
|
(id INT AUTO_INCREMENT,
|
|
|
|
clientFk INT,
|
|
|
|
isSelected TINYINT(1) NOT NULL DEFAULT 0,
|
|
|
|
PRIMARY KEY(id),
|
|
|
|
UNIQUE KEY clientFk (clientFk))
|
|
|
|
ENGINE = MEMORY;
|
|
|
|
|
|
|
|
INSERT INTO tmp.client(clientFk)
|
|
|
|
SELECT DISTINCT clientFk
|
|
|
|
FROM vn.invoiceOut
|
|
|
|
WHERE issued > TIMESTAMPADD(MONTH, -2, util.VN_CURDATE());
|
|
|
|
|
|
|
|
SELECT max(id) INTO maxClientFk
|
|
|
|
FROM tmp.client;
|
|
|
|
|
|
|
|
|
|
|
|
WHILE i < vNumber DO
|
|
|
|
|
|
|
|
SET i = i + 1;
|
|
|
|
|
|
|
|
WHILE c = 0 DO
|
|
|
|
|
|
|
|
SELECT id INTO c
|
|
|
|
FROM tmp.client
|
|
|
|
WHERE id = floor(RAND() * maxClientFk) + 1
|
|
|
|
AND isSelected = FALSE
|
|
|
|
LIMIT 1;
|
|
|
|
|
|
|
|
END WHILE;
|
|
|
|
|
|
|
|
-- SELECT i, maxClientFk, c;
|
|
|
|
|
|
|
|
UPDATE tmp.client
|
|
|
|
SET isSelected = TRUE
|
|
|
|
WHERE id = c;
|
|
|
|
|
|
|
|
SET c = 0;
|
|
|
|
|
|
|
|
END WHILE;
|
|
|
|
|
|
|
|
SELECT c.id, c.name FROM tmp.client tc
|
|
|
|
JOIN vn.client c ON c.id = tc.clientFk
|
|
|
|
WHERE isSelected
|
|
|
|
ORDER BY clientFk;
|
|
|
|
|
|
|
|
|
|
|
|
END$$
|
|
|
|
DELIMITER ;
|