特定の場所でサービスを提供しているかどうかにかかわらず、返品したいと思います。階層は郵便番号>州>国全体です
したがって、TX zipコードを入力すると、最初にzipエントリがあるかどうかが確認されます。そうでない場合は、TXエントリをチェックします。それでもヒットがない場合は、全国的なポリシーをチェックします。
これを達成するために、特異性のレベルを示すCalcフィールドがあります。郵便番号はレベル3、州= 2、CW=1です。したがって、単純なMAXを使用すると、処理しているデータのレベルがわかります。これに対する私のクエリの例は次のとおりです。
SELECT Service_Availability.Service_Product, MAX(Service_Availability.Specificity) AS Spec
FROM Service_Availability
WHERE Service_Availability.State = "TX" OR Service_Availability.State = "CW"
GROUP BY Service_Product;
ここで私の問題が発生します。
提供される最高レベルの特異性でサービスが利用できるかどうかを知りたい。しかし、私には正しいアプローチがありません...
SELECT Service_Availability.Service_Product, MAX(Service_Availability.Specificity) AS Spec
FROM Service_Availability
WHERE (Service_Availability.State = "TX" OR Service_Availability.State = "CW")
AND Service_Availability.Available = TRUE
GROUP BY Service_Product;
これは、サービスが最高レベルの特異性で利用可能である場合ではなく、サービスが利用可能である場合に最高レベルの特異性を返します。
別の言い方をすれば、zipが68123(オマハ、ネブラスカ)であると仮定します。
私のデータベースは、私たちがネブラスカでサービスを提供していることを示していますが、何らかの理由で、オマハ(68123)では特にサービスを提供できません。データベースにzipレベルのデータがあることを確認し、それを使用して可用性(FALSE)を判別する必要があります。
私のコードが間違ったアプローチである理由は理解していますが、どちらの方向から来るのかわかりません。ヘルプをいただければ幸いです。