У вас есть 2 способа.
Первый (динамический)
Прежде всего, вы считаете все ожидания:
SELECT COUNT(*) FROM pending;
Затем вы показываете первую половину команде 1:
$half = round($count/2);
SELECT * FROM pending ORDER BY id DESC LIMIT $half;
Команда 2 получает:
SELECT * FROM pending ORDER BY id DESC LIMIT $half,$half;
Если у вас больше команд, вам просто нужно разделить общее количество команд на 2.
Второй вариант (фиксированный)
Когда вставляются ожидающие, вы связываете их с командой. Но вы должны добавить еще одно поле к вашей таблице.
Допустим, у вас есть поле team TINYINT(1) UNSIGNED
.
Когда помещается следующий ожидающий, вы проверяете последнюю команду, вставленную с этим:
SELECT team FROM pending ORDER BY id DESC LIMIT 1;
Допустим, у вас есть конфиг, в котором хранится ваше количество команд:
$totalTeamsAvailable = 2;
С помощью значения, которое вы выбрали в запросе, который вы делаете:
$nextTeam = (++$teamFromSql % $TotalTeamsAvailable) + 1;
Теперь у вас есть команда, которая может быть связана с этим ожиданием. Конечно, вы добавляете это с
INSERT INTO pending (data,team) VALUES (,$nextTeam);
Это второе решение может страдать от состояния гонки. (IE: 2 ожидающих, размещенных на одном и том же рейте, могут быть связаны с одной и той же командой, но я считаю, что это не повредит вообще)
Addedum
Для подсчета команды, которая недавно что-то сделала, у вас есть 2 способа:
- Вам нужна таблица
teams
, в которой хранятся последние данные для входа сотрудников.
- Храните каждое действие, выполненное каждой командой (например, команда 1 одобрила и отправила ожидающий заказ № 2) с данными (возможно, у вас уже есть эта таблица)
На данный момент легко выбрать количество команд с недавней активностью.
Используя команду таблицы, вам просто нужно сделать:
$teamWithRecentlyActivity = SELECT COUNT(*) FROM teams WHERE lastLogin > (time() - (60*60*24));
//> This select all teams within 1 day from last login
Имея этот номер, вы можете разделить все ожидающие запросы с помощью:
$pendingPerTeam = round($totalPendings / $teamWithRecentlyActivity);
И используйте это смещение в моем первом решении