2017-04-03 17 views
0

基本的に私は、製品リストと2つのバイナリフィールドを持つテーブルを持っています。例えば署名が必要で、追跡が必要です。明確な検索結果を返すにはどうすればいいですか?

次に、私は宅配便のリストを持っています。それにも2つのブール値フィールドがあります。

特定の製品に使用できるすべての宅配業者のリストを返したいと思います.1つのバイナリフィールドにyesと表示されている製品にもう1つの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を使用しています。

+0

サンプルテーブルのデータを含めてください。この説明に基づいてあなたの質問を「掘り下げる」ことはできません。 –

+0

@Francisco: "ブール値"または "はい/いいえ"フィールドを意味すると思います。バイナリフィールドは非常に異なるものです。 - サンプルデータはhttp://ozh.github.io/ascii-tables/でご確認ください。 – Andre

+0

はいブール値です。しましょう。ほんの一秒 –

答えて

0

"ヘルパーフィールド"が作成されました。

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

次に、0を除外します。基本的に、良いものではない唯一のケースは、最初のテーブルでは何かがyesであり、2番目のテーブルではyesであるというケースです。他のすべての組み合わせは良いです。

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))))); 
関連する問題