私の現在のプロジェクトでは、6つのテーブルを検索できます。検索ロジックが6つ以上の関連テーブルにアクセスするには
テーブルは、次のとおり A、B、C、D、E、F
すべてのテーブルがリスト内の別のテーブルを介して相互に関連しています。
など。 A-> USER-> PHONENUMBER Phonenumber->国等と同様B B-> A-> C C-> F F-> D
searchmask /形成ユーザが提示されますので可能性を残しサーバーに特定のパラメーターのみを送信するために開くと、ユーザーが通過するパラメーターに関係なく、検索結果Rを検索する必要があります。
この場合、パラメータは上記の表のいずれかの列の値です。 Phonenumber-> Provider = Verizonという意味は、プロバイダ= Verizonのすべてのエントリが必要だということです。
実際の問題は、特定のテーブルで検索するのではなく、特定のテーブルで検索した結果から正しい結果を検索していることです。
私に説明しましょう:ここでの結果は、現在検索しているテーブルのテーブルオブジェクトではありません。
結果は常にAとB 例の要件に少なくとも1つのエントリを持っている必要があり、同じオブジェクトの結果でなければなりません: A =ユーザーが Bが存在するすべてのテーブルが関係を持っているので=彼はPHONENUMBER
を持っていますお互いに直接的または間接的に、関連するテーブルをids/keys/constraintsを介してProvider = VerizonおよびJOIN
の行を検索することによってのみ、AまたはBの列を検索せずに結果にアクセスできます。
現在、複数のクエリを実行しています。 まず、パラメータの種類を確認します。 「A列からC列ですか」 はい、A、B、またはCで直接SELECTを実行し、結果をResultとして取得します。
、はい、それからEにSELECTを行う 「彼らはEから列です」(PHPで)結果としてE.
からC_IDとC上の別のSELECTその後、私はいつも/オブジェクトを持つようにしたいですA.value1、B.value1を含む配列 私はC、D、E、またはFについての情報は一切欲しません。 A.value1とB.value1からなるResultを取得したいのは、 1つまたは複数の表の列、たとえばプロバイダ= Verizon AND国=中国AND OnVaccation = True
私は複雑です。
テーブルA〜Fのテーブルデザインを提供できる場合は、現在使用しているサンプルクエリと一緒にどのテーブルにどのフィールドを結合するかを詳しく説明すると、より役に立つ応答を得ることができます。基本的にINNER JOIN/LEFT JOIN /サブクエリロジックが問題を単純化するように思えますが、あなたはあまりにも疑問に思っています。 –