PHP / MySQL - Как подсчитать конкретные переменные из объединенных таблиц - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть 2 таблицы.

бизнес-единица

ID unit
1  AR
2  AP
3  AT HOME
4  CSS
5  EIT
6  SUPPORT

asset_item

ID allocation_unit item_type
1  AR              Laptop
2  AP              Laptop
3  CSS             Laptop
4  EIT             Laptop
5  EIT             Laptop
6  EIT             Laptop

Я хотел иметь возможность собирать данные в таблицу, где в Iмогу подсчитать, сколько ноутбуков имеет все бизнес-единицы

Это результат, который я хотел показать

Unit     Laptop
AR       1
AP       1
AT HOME  0
CSS      1
EIT      3
SUPPORT  0

Заранее спасибо

1 Ответ

0 голосов
/ 27 ноября 2018

Вы можете сделать LEFT JOIN из таблицы business_unit в asset_item соответственно.Таблица business_unit должна быть самой левой таблицей, так как вы хотите рассмотреть все unit, даже если в asset_item.

нет совпадающих строк. Тогда мы можем GROUP BY и использовать условное агрегированиена COUNT() функция:

SELECT
  bu.unit, 
  COUNT(CASE WHEN ai.item_type = 'Laptop' THEN 1 END) AS Laptop
FROM business_unit bu 
LEFT JOIN asset_item ai 
  ON ai.allocation_unit = bu.unit 
GROUP BY bu.unit

Если вас интересует только Laptop значения счетчика, то мы можем поставить условие на сам LEFT JOIN и покончить с выражением CASE..WHEN.

SELECT
  bu.unit, 
  COUNT(ai.item_type) AS Laptop
FROM business_unit bu 
LEFT JOIN asset_item ai 
  ON ai.allocation_unit = bu.unit AND 
     ai.item_type = 'Laptop' 
GROUP BY bu.unit
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...