Не видя таблицы базы данных, трудно дать конкретный ответ, но в целом я хотел бы использовать левое соединение ваших рабочих мест с рабочими местами. Для этого примера, я буду считать структуру таблицы, как это:
рабочих мест:
workplace_id - autoincrment primary key
workplace_label - name to be used for display
[other workplace data fields] - not important for this example
workplace_id workplace_label
1 0001
2 0002
...
рабочие:
worker_id - autoincrement primary key
[other worker data fields] - not important for this example
workers_workplaces:
workplace_id - part of compound primary key with worker_id
worker_id - part of compound primary key with workplace_id
запрос для получения данных вы можете посмотреть, как это:
SELECT
wp.workplace_label AS workplace,
COUNT(wwp.worker_id) AS worker_count
FROM workplaces AS wp
LEFT JOIN worker_workplaces AS wwp
ON wp.workplace_id = wwp.workplace_id
GROUP BY workplace
Это возвращает данные как
workplace worker_count
0001 0
0002 0
0003 2
0004 1
...
Примечание, я на самом деле не использовать workers
таблицу в запросе не было необходимости. Я просто хотел объяснить существование этой таблицы, чтобы вы могли видеть, как таблицы workers_workplaces
связывают две другие таблицы вместе.
При чтении из набора результатов в PHP вы, вероятно, сделать что-то вроде:
$workplace_array = array();
while ($row = /* your DB fetch here */) {
$workplace_array[$row['workplace'] = $row['worker_count'];
}
Это дает ассоциативный массив с рабочим местом этикеток в качестве ключей. Если вы хотите просто получить метки рабочего места (например, чтобы отобразить строку заголовка в таблице.Вы можете легко получить, что, как:
$workplace_labels = array_keys($workplace_array);
почему мой вопрос остается неясным или не полезно? – JoaoVM
Похоже, вы должны получать все эти данные с помощью одного запроса LEFT JOIN. –
У меня есть простой запрос, чтобы вернуть все рабочие места на стол. И у вас есть второй запрос, чтобы вернуть рабочие места и классифицировать работника на определенные рабочие места, второй запрос использует внутренние соединения. – JoaoVM