PHP / MySQL-如何计算联接表中的特定变量

时间:2018-11-27 15:41:00

标签: mysql mysqli

我有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

我希望能够将数据提取到一个表中,在其中我可以计算出所有业务部门中有多少台笔记本电脑

这是我想展示的结果

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

提前谢谢

1 个答案:

答案 0 :(得分:0)

您可以从angular.module('app',[]) .controller('mainCtrl', function($scope){ var vm = this; $scope.obj = { "schedule": [{ "day": "Monday", "start": "15:00:00" }, { "day": "Tuesday", "start": "16:30:00" }] } for(var i = 0; i < $scope.obj.schedule.length; i++) { $scope.obj.schedule[i].start = stringToDate($scope.obj.schedule[i].start); } function stringToDate(stringDate) { var date = new Date(); var splitDate = stringDate.split(':'); date.setHours(splitDate[0], splitDate[1], splitDate[2]); return date.toLocaleTimeString(); } })表到<html ng-app="app"> <body> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <div ng-controller="mainCtrl as vm"> <div ng-repeat="day in obj.schedule"> <input type="time" min="00:00:00" max="23:59:00" placeholder="" ng-model="day.start"/> </div> </div> </body> </html>相应地执行LEFT JOINbusiness_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