Создать идентификатор номера префикса с условием по идентификатору группы
Сначала это мой стол
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