Создать идентификатор номера префикса с условием по идентификатору группы

Сначала это мой стол

CREATE TABLE IF NOT EXISTS `group` (
    `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
    `name` varchar(255) NOT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `member` (
    `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
    `group_id` int(11) unsigned NOT NULL,
    `code` int(11) NOT NULL,
    `name` varchar(255) NOT NULL,
    PRIMARY KEY (`id`),
    KEY `group_id` (`group_id`),
    FOREIGN KEY (`group_id`) REFERENCES `group` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

я нуждаюсь member.id выглядеть как 001, 002, 003. я следую lpad(id, 3, 0) и дело близко

Но как сбросить 001, 002, 003 обратно в 001 снова, где есть разные group_id

Этот запрос имеет результат 01-001, 01-002, 02-003, 03-004 (group.id - member.id)

SELECT CONCAT(lpad(g.id, 2, 0),'-',lpad(m.id, 3, 0)) AS id, m.name
FROM member m
LEFT JOIN group g ON g.id = m.group_id
ORDER BY m.id ASC

Пожалуйста, помогите, мне нужно 01-001, 01-002, 02-001, 03-001 (group.id - member.id)

Или я могу использовать триггер, чтобы сделать мой member.code автоматическая генерация при вставке в 01-001, 01-002, 02-003, 03-004 на базе group.id - member.id

0 ответов

Другие вопросы по тегам