Биллинговая система Nodeny

Главная категория => Общий раздел => Тема начата: vddav от 02 Ноября 2019, 15:44:44



Название: ппк в mysql
Отправлено: vddav от 02 Ноября 2019, 15:44:44
кто может досказать функцию или процедуру mysql для получения ппк в запросе?


Название: Re: ппк в mysql
Отправлено: Efendy от 02 Ноября 2019, 18:26:31
Код:
select CONCAT(id, SUBSTRING(SUBSTRING(id,1,1)+SUBSTRING(id,2,1)+SUBSTRING(id,3,1)+SUBSTRING(id,4,1)+SUBSTRING(id,5,1)+SUBSTRING(id,6,1),-1,1)) AS ppc from users where id=357;


Название: Re: ппк в mysql
Отправлено: vddav от 02 Ноября 2019, 21:39:38
Код:
select CONCAT(id, SUBSTRING(SUBSTRING(id,1,1)+SUBSTRING(id,2,1)+SUBSTRING(id,3,1)+SUBSTRING(id,4,1)+SUBSTRING(id,5,1)+SUBSTRING(id,6,1),-1,1)) AS ppc from users where id=357;
спасибо, то что надо!)


Название: Re: ппк в mysql
Отправлено: Cell от 03 Ноября 2019, 08:59:45
Да, годный запросик. Себе на заметку.


Название: Re: ппк в mysql
Отправлено: 0xbad0c0d3 от 07 Января 2020, 11:17:13
Код:
DELIMITER $$
CREATE FUNCTION `calc_ppk`(ID INT) RETURNS int(11)
BEGIN
    DECLARE ppk INT UNSIGNED DEFAULT 0;
    DECLARE userID INT UNSIGNED DEFAULT ID;
    WHILE ID > 0
        DO
            SET ppk = ppk + (ID % 10);
            SET ID = FLOOR(ID / 10);
        END WHILE;
    RETURN CAST(CONCAT(userID, ppk % 10) AS UNSIGNED);
END$$


Название: Re: ппк в mysql
Отправлено: Efendy от 07 Января 2020, 11:25:47
Этот запрос более правильный т.к. будет работать для больших id (когда абонентов больше миллиона)