【发布时间】:2014-08-10 02:51:19
【问题描述】:
我有三个表:wi_district、wi_group 和 wi_training。我需要根据地区计算小组和培训。为此,我使用了以下 SQL;
- SQL1
SELECT wi_district.dst_name, COUNT(grp_id) AS group_count, MAX(grp_created_date) as grp_created_date 来自 wi_group INNER JOIN wi_district ON wi_district.dst_id=wi_group.grp_dst_id AND wi_group.grp_deleted=0 AND wi_group.grp_type IN (3) 按 wi_district.dst_name 分组
每个区的查询计数组。同样,
- SQL2
SELECT wi_district.dst_name, COUNT(trn_id) AS training_count, MAX(trn_created_date) as trn_created_date 来自 wi_training INNER JOIN wi_district ON wi_district.dst_id=wi_training.dst_id AND wi_training.trn_deleted=0 AND wi_training.trn_beneficiary_type IN (-1,2,8,9,10) 按 wi_district.dst_name 分组
查询计算每个地区的培训。现在我需要将所有从 SQL1 和 SQL2 得到的结果结合起来,得到结果形式为
dst_name ||组数 || grp_created_date ||培训计数 || trn_created_date
问题是每当我使用 SQL1 LEFT JOIN SQL2 时,它都会显示与 SQL1 相关的结果,而 SQL2 的结果无法获得,反之亦然。请帮我解决 MySQL 中的这个问题
【问题讨论】:
-
那么不要使用左连接。
left join是“左表的所有匹配记录,右表的任何匹配记录”。如果您需要两个表中的所有记录,则需要外连接。