如何在特定查询中返回结果?

时间:2017-04-03 13:14:33

标签: database ms-access

基本上我有一个包含产品列表和2个二进制字段的表,例如,需要签名,需要跟踪。

然后我有一个信使列表,也有那两个布尔字段。

我想返回一个我们可以用于特定产品的所有快递的列表,知道在一个二进制字段中具有yes的产品在另一个中需要yes。但是没有可以在另一张桌子上有是或否。

ProductNumber trackingrequired signaturerequired
123               yes                     no

CourierID trackingrequired signaturerequired
1                    yes                     yes
2                    no                       no
3                    yes                     no
4                   no                       yes
5                    yes                     no

查询将返回1 3和5:

ProductNumber CourierID
123              1
123              3
123              5

由于不需要签名,因此第二列上的数据与此情况无关。如有必要,我很乐意改变数据的存储方式。 我正在使用MSAcess。

2 个答案:

答案 0 :(得分:0)

没有足够的产品记录来获得体面的样品。但试试:

SELECT Products.ProductNumber, Couriers.CourierID, Couriers.TrackingRequired, Couriers.SignatureRequired
FROM Couriers, Products
WHERE (((IIf([Products]![TrackingRequired]=-1,[Couriers]![TrackingRequired]=-1, IIf(Products!SignatureRequired=-1,[Couriers]![SignatureRequired]=-1,[Couriers]![SignatureRequired]>=-1)))));

答案 1 :(得分:0)

创建了一个“辅助字段”。

((IIf(([tblmarketplaceshippingservices].[Tracked]="Yes" And [tblCourierServices].[Tracked]="No") Or ([tblmarketplaceshippingservices].[SignatureRequired]="Yes" And [tblCourierServices].[Signature Required]="No"),0,1))=1));

然后过滤掉0。基本上唯一不好的情况是第一张桌子上的东西是肯定的,第二张桌子上没有。所有其他的是没有组合是好的。