У меня есть две таблицы.
Действие связано с компанией company_id
Итак, в таблице действий, action_id
является первичным ключом и автоматически увеличивается. На основе company_id
информация будет отображаться. Если пользователь имеет company_id
1 назначенный ему, и он вошел в систему, он может делать действия, связанные с company_id
1. У другой компании будут разные действия с большим количеством action_id
s. Для каждой компании я хочу создать уникальный action_id
, Как мне этого добиться?
Например:
Есть 3 компании, использующие мой модуль действий
Компания, B компания, С компанией
action_id
с 1 по 10 назначено в таблице действий.action_id
с 11-15 назначено в таблице действийСейчас С компанией создает 5 действий.
Теперь у нас есть action_id
с 16-20 назначено.
Поэтому, когда я показываю action_id
в Компания будет отображаться с 1 по 10
Ожидаемый результат:
Вы можете использовать concat (company_id, «_», action_id) как unique_id
я хотел бы использовать INSERT...SELECT
при вставке новых идентификаторов в таблицу, чтобы вы могли быть уверены, что у вас правильный счет:
INSERT INTO action (company_id, uid)
SELECT :company AS company_id, COUNT(*) + 1 AS uid
FROM action
WHERE action.company_id = :company
Конечно, это означает, что после удаления ваши идентификаторы больше не будут непрерывными. Если вы хотите автоматически генерировать уникальные идентификаторы, то с чистым sql это становится немного сложнее. Честно говоря, я бы просто использовал что-то вроде индекса массива (если число является важной частью) для именования на данном этапе, вместо того, чтобы хранить его вручную, особенно если это вычисляемые данные.
$actions = /* your actions retrieval, assume associative array */;
$actions[0]; //uid == 1, index == 0, etc