【发布时间】:2018-03-03 19:06:23
【问题描述】:
我有三个表 ClaimHeader、ResClaim 和 ResActivity。 ClaimHeader表的主键作为ResClaim表的外键,ResClaim表的主键作为ResActivity的外键强>表。
下面是我的表格
ClaimHeader:
HeaderID FileID FileName
1 fileid1 file1.xml
2 fileid2 file2.xml
3 fileid3 file3.xml
4 fileid4 file4.xml
--------------------------------------------------
ResClaim:
ClaimPKID HeaderPKID ClaimDateSettlement
1 1 2017-04-08
2 1 2017-03-08
3 2 2017-04-10
4 3 2017-05-08
--------------------------------------------------
ResActivity:
ActivityPKID ClaimPKID ActivityNet
1 1 400
2 2 3000
3 2 2030
4 3 5000
ResClaim 表使用 HeaderPKID 作为 ClaimHeader 表的外键,ResActivity 表使用 ClaimPKID 作为 ResClaim 表中的外键
我的方案是我应该显示所有三个表中的相关记录。
例如,我想显示 ClaimHeader 表中的 FileID、ResClaim 表中的索赔总数和 ActivityNet 的总和strong> 来自具有匹配条件的 ResActivity 表。
我的预期结果是:
FileID | Total Claim(s) | ActivityNet
--------------------------------------------------
fileid2 | 1 | 5030 (3000+2030)
--------------------------------------------------
我尝试过以下查询:
SELECT
`ClaimHeader`.*,
count(ResClaim.ClaimPKID) as claims,
sum(ResActivity.ActivityNet) as net
FROM
`ClaimHeader`
RIGHT OUTER JOIN `ResClaim`
ON ResClaim.ClaimPKID = ClaimHeader.HeaderID
RIGHT OUTER JOIN `ResActivity`
ON ResClaim.ClaimPKID = ResActivity.ActivityPKID
上述查询没有返回相关的记录值,而是返回所有列的总和以及 ResActivity 和 ResClaim 表中的计数。
【问题讨论】:
-
这里的大多数人想要格式化文本,而不是图像(或图像链接)。
-
添加一些示例表数据和预期结果。 (格式化文本...)并向我们展示您当前的查询尝试。
-
第 1 步:
JOIN桌子! -
您的预期结果显示一个 fileid (fileid2)。所以你只想展示那个?那么为什么您的查询中没有
WHERE子句?还是您想选择更多行?每个文件ID一个可能吗?至于 ClaimDateSettlement:我也不明白。您说要显示它,但您的预期结果不包含它。那么你想展示什么?您预期的样本结果中的索赔数量?还是ClaimDateSettlement的数量不同?还是别的什么? -
附注:与您的姓名保持一致。如果该表名为
claimheader或claim_header,那么您应该在此表和任何其他表中调用它的 IDclaimheaderid或claim_header_id。对于名为fileid的列,我希望您指的是另一个名为file的表。但是,为什么在表claim_header中有filename?那应该在file表中。如果没有file表,那么在声明头表中应该没有fileid。