このテーブルを持っている(申し訳ありませんが、ここでまともなレイアウトを取得することはできません):
PD Header Text Mask_Producer Mask_Dep Mask_Diam
----------------------------------------------------------------------------------------------
10 Producer Aproducer Aprod * *
10 Producer Bproducer Bprod * *
20 Diam A Aprod 10 30
20 Diam A Aprod 20 40
20 Diam B Aprod 10 40
30 Dep 10 Aprod 10 *
30 Dep 20 Aprod 20 *
30 Dep 30 Aprod 30 *
20 Diam A Bprod 20 40
30 Dep 10 Bprod 10 *
テーブル内の行を、他の行を選択するためのフィルター/マスクとして使用しています。
したがって、ユーザーはすでに次の行を選択しています。
PD Text
-------------
10 Aproducer
20 A
ここで、PD=30の行がこれらの以前の選択に適合するかどうかを調べたいと思います。
PD = 10、Text = Aproducerは、Mask_Producerは "Aprod"でなければならないことを示しています(Mask_DepとMask_Diamは星によって何でも許可されています)
PD = 20、Text = Aは、Mask_Producerが "Aprod"であり、Mask_Depが10または20であり、Mask_Diamが30または40(またはスター)である必要があることを示します。
結果を上の表の6行目と7行目にしたいと思います。
次に、2000行と20個のMask_xxフィールドを持つこの例を想像してみてください。
これを行うには、IN、LEFT JOIN、JOIN、および一時テーブルなどのSQLを考えていますが、複雑になりすぎている可能性があります。