ちょっと説明が難しい (mysql) sql クエリの質問があります。
パラメータ値と、パラメータ値が関連付けられているケースIDを格納するデータベーステーブルがあります。
外部キーはparent_idで、各親は可変数のパラメータを持つことができます。
これは、3 つのパラメーターがある場合、3 つの行、4 つのパラメーター、4 つの行などがあることを意味します。
同じ親に対して複数のエントリが存在する場合もあります。ケース ID を取得するには、その親のすべてのパラメーターのパラメーター VALUE を比較する必要があります。表は次のようなものです。
テーブルケース
id param_value param_id parent_id caseID
----------------------------------------------
1 red 101 200 1234
2 pepper 102 200 1234
3 green 101 200 3456
4 pepper 102 200 3456
5 pink 205 250 9875
6 panther 206 250 9875
7 fuzzy 207 250 9875
上記の例: 親には 200 と 250 の 2 つの異なるタイプがあります。200 には、2 つのケース ID に対して 2 つのセットがあります。
1234 : パラメータ 101 = 赤、パラメータ 102 = ペッパー
3456 : パラメータ 101 = 緑およびパラメータ 102 = ペッパー
3 番目の親は別の親であり、たまたま 3 つのパラメーターを持っています (さらに多くのパラメーターを持つこともできます!)。
したがって、親が誰であるか、その親のパラメーター ID がわかり、パラメーター値がわかり、対応するケース ID を見つける必要があります。
次のようなselectを使用して2つのパラメーターを使用してこれを行うことができます。
SELECT c1.caseId from case c1
INNER JOIN case c2 ON c1.caseId=c2.caseID
WHERE c1.param_id=101 and c1.param_value='red'
AND c2.param_id=102 and c1.param_value='pepper';
(これは caseId = 1234 を返します)
しかし :
SQL だけを使用すると、2 つ以上の内部結合でこれを行う方法がわかりません (したがって、3 つのパラメーターを持つピンク パンサーに対して同様の要求を行うことはできません)。可変数のパラメーターを使用して SQL クエリを作成する方法を知る必要があります。
Zend の生の SQL でこれを行うことができますが、php Zend でこれを行う方法があれば、私はすべて耳にします!