ONE table JOINを使用して、顧客が検索できる車両のMAKE、MODEL、YEAR、およびTRIMS基準のリストを取得する方法を理解しようとしています。
すでにマスターキーテーブルがあり、管理者はそこからさまざまな車両オプションから選択し、その製品に関するこれらの車両関連の詳細をPRODUCTテーブルに入力します。
管理者がPRODUCTSテーブルに入力した内容に基づいて、利用可能な車両の詳細の選択肢のみを反映した、買い物客用のリストを作成したいと思います。
PHPを使用してMAKEMODELTRIMSテーブルをループ/反復し、PRODUCTSテーブルでPRODUCTSテーブルにMAKE MODELYEARTRIMタイプが存在するかどうかを検索しています。ただし、PRODUCTSテーブルへの個別の呼び出しは約800回かかります。
これはベストプラクティスではなく、あらゆる種類の問題を引き起こす可能性があることを理解しています。データベースへの多くの呼び出しへの道であり、効率的ではありません。
私は別の質問で言われています
これは、 JOINステートメントとWHEREステートメントを使用して1回の呼び出しで実行できます。
以前にテーブルJOINSを使用しましたが、これらの多くのMAKES、MODELS、YEARS、TRIMSを1回呼び出すだけで、買い物客が選択できるMAKES、MODELS、YEARS、TRIMS基準の1つのリストを作成する方法がわかりません。
私はあなたの例からここでこれについて学ぶことができるものは何でもありがたいです:)
車両関連の詳細を製品エントリレコードに追加するための管理マスターキー選択テーブルの例を次に示します。
表:MAKES
| Id | MAKE | // Admin table for selecting products related vehicle make
------------------
| 1 | FORD |
| 2 | CHEV |
| 3 | GMC |
| 4 | HONDA |
etc.
テーブル:フォード
| Id | MODEL | // Admin table for selecting products related vehicle model
------------------
| 1 | F150 |
| 2 | ESCAPE |
| 2 | EXPLORER |
etc.
テーブル:FORD_F150_YEARS_TRIMS
| Id | YEARS| TRIMS | // Admin table for selecting products related vehicle year and trim(s)
--------------------------------------------
| 1 | 1999 | 1999_SPORT+1999_SPORTRAC+1999_XLT+1999_XLS |
| 2 | 2000 | 2000_XLT+2000_XLS+2000_LTD+2000_EDDIE_BAUER |
| 3 | 2001 | 2001_SPORTRAC+2001_XLT+2001_LTD |
etc.
管理者が製品/車両の詳細を入力している製品テーブルは次のとおりです。
表:製品
| PRODUCT_ID | MAKE | MODELS | YEARS | TRIMS |
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 123456 | FORD FORD GMC | F150 ESCAPE CANYON | 2000 2001 1999 | FORD_F150_1999_SPORT+FORD_F150_1999_SPORTRAC+GMC_CANYON_1999_LTD+GMC_CANYON_1999_LTD |
| 123457 | FORD GMC CHEV | F150 EXPLORER SILVERADO | 2000 2010 2010 | FORD_F150_2001_XLT+FORD_F150_2001_LTD+GMC_CANYON_2010_XLT+CHEV_SILVERADO_1500_2010_LTD |
etc.
私がやりたいのは、PRODUCTSテーブルでクエリを実行して、製品がある車種のみのテーブルまたはリストを作成できるようにすることです。
したがって、SPORTRACトリムを備えた2001 FORD F150に適合する製品がPRODUCTSテーブルにない場合、買い物客に2001 FORD F150を備えたSPORTRACの選択肢を提供したくありませんが、XLT + LTDを搭載した2001年フォードF150
だから本当に-私は、存在しない製品の車両の詳細について買い物客の選択肢を排除したいだけです。
これは、データベースへの1回のMySQL呼び出しで実行できると言われています。すべてのメーカー、モデル、トリムをループしてPRODUCTSテーブルを個別に呼び出す代わりに、テーブル結合とwhileステートメントを使用して、顧客ベースで利用可能なすべての潜在的なMAKEMODELTRIMSの選択肢のリストを取得できると言われています。 PRODUCTSテーブルにあるもののみ
PRODUCTSテーブルを1回呼び出してから、PHPを使用して結果の重複をループして削除することで、これを行う方法がわかります。しかし、何千もの製品があり、これらは成長する可能性があります-それで私はこれを達成するためのベストプラクティスの方法を探しています。