gpt4 book ai didi

mysql - 如何编写 mysql 查询以从 2 sql 查询中获取数据?

转载 作者:太空宇宙 更新时间:2023-11-03 12:34:51 25 4
gpt4 key购买 nike

我有两张 table

tbltraining 

trId(PK) trname
------- ------
1 training1
2 training2
3 training3
4 training4
5 training5
6 training6


tbltrainAssign

trassigno trId(FK) date1 date2
--------- ------ ----------- ----------
1 1 12/12/2012 12/12/2013
1 1 12/12/2012 12/12/2013
2 3 01/12/2012 08/12/2013
2 3 01/12/2012 08/12/2013
2 3 01/12/2012 08/12/2013
3 1 02/12/2012 12/12/2013
3 1 12/12/2012 12/12/2013

我想要的是来自 tbltraining 的数据以及作业计数。 trId =1 在 tbltrainAssign 中被分配了 2 次,trId 被分配了 1tim。所以结果应该是这样的

trId        trName       count
1 training1 2
2 training2 0
3 training3 1
4 training4 0
5 training5 0
6 training6 0

最佳答案

您需要的是一个简单、直接的 JOIN 尤其是 LEFT JOIN 以获得在第二个表中没有分配的无与伦比的 trName ,使用 COUNTGROUP BY,如下所示:

SELECT t.trId, t.trname, COUNT(s.trId)
FROM tbltraining t
LEFT JOIN tbltrainAssign s ON t.trId = s.trId
GROUP BY t.trId, t.trname;

SQL Fiddle Demo

注意事项:请避免在表名和列名 tbltr 中使用描述性前缀.

更新:您必须从分配表中选择不同的日期,以便计算每次培​​训的不同分配,如下所示:

SELECT t.trId, t.trname, COUNT(s.trId)
FROM tbltraining t
LEFT JOIN
(
SELECT DISTINCT trId, DATE(date1), date(date2)
FROM tbltrainAssign
) s ON t.trId = s.trId
GROUP BY t.trId, t.trname;

Updated SQL Fiddle Demo

关于mysql - 如何编写 mysql 查询以从 2 sql 查询中获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13651137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com