我有表 Company
+--------------------------+
| id | companyname |
+--------------------------+
| 1 | JACK |
| 2 | ANDY |
和表Job
+--------------------------------+
| id | id_com | title job |
+--------------------------------+
| 1 | 1 | php |
| 2 | 1 | mysql |
| 3 | 1 | html |
| 4 | 2 | css |
我想要这样的结果:
id | company name | Number of job |
+----------------------------------+
1 | JACK | 3 |
2 | ANDY | 1 |
- 工作属于公司
- 公司有很多工作
我如何使用 Mysql 或 Query Builder Laravel 做到这一点?
最佳答案
不少于不少于:
查询 1:
SELECT c.id, c.companyname, count(j.id) AS nb
-- `sum(if(j.field IS NOT NULL, 1,0)) AS nb`
-- may be used if you always have a join
-- and want to check `j.field` instead
FROM Company c
LEFT JOIN Job j
ON j.id_com = c.id
GROUP BY c.id, c.companyname
Results :
| id | companyname | nb |
|----|-------------|----|
| 1 | JACK | 3 |
| 2 | ANDY | 1 |
| 3 | VOID | 0 |
对于 Laravel,应该是这样的:
$r = DB::table('Company')
->leftJoin('Job', 'Job.id_com', '=', 'Company.id')
->select(
DB::raw('Company.id, Company.companyname, count(Job.id) AS nb'))
->groupBy(
'Company.id',
'Company.companyname')
->get();
关于mysql - 在 MySQL 或查询生成器中使用 LEFTJOIN 进行 SELECT 和 COUNT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45256018/