1:1关系查询

问题描述 投票:0回答:1

我希望有人可以为我要做的事情指明正确的方向,如果措辞太过恐怖,请对不起。

我有两个表WorkOrders和WorkOrderAssets,WorkOrders本质上是在我们的系统中创建的票证的标题记录。 WorkOrderAssets是可以附加到WorkOrder记录的项目记录表。一旦WorkOrder记录可以附加无限数量的资产。但是,我试图构建一个报表,以查找仅附加了一个WorkOrderAssets记录的WorkOrder。

排除多条记录中的1条并仅在1:1时才拉的最佳方法是什么?报告语言是stimulsoft,但是查询主要由MySQL组成。

sql report stimulsoft
1个回答
0
投票

可以这么简单吗?我只有Microsoft SQL可用,但这就是我要这样做的方式。我创建了示例表进行测试。

insert WorkOrders(WorkOrderId)
values (1), (2), (3), (4)

create table WorkOrderAssets (WorkOrderAssetId int, WorkOrderId int)
insert WorkOrderAssets (WorkOrderAssetId, WorkOrderId)
values (11,1), (12,1), (13,1), (21,2), (31,3), (41,4), (42,4)

select wo.WorkOrderId
from WorkOrders as wo
    join WorkOrderAssets as wa on wa.WorkOrderId = wo.WorkOrderId
group by wo.WorkOrderId
having count(wa.WorkOrderAssetId) = 1

结果:

WorkOrderId
2
3
© www.soinside.com 2019 - 2024. All rights reserved.