我试图弄清楚如何使用 ONE table JOIN 来获取车辆 MAKE、MODEL、YEAR 和 TRIMS 标准的列表,供客户搜索。
已经有主密钥表,管理员可以从中选择一系列车辆选项,并将有关该产品的这些车辆相关详细信息输入到PRODUCT表中。
我现在想为购物者生成一个列表,该列表仅反映可用的车辆详细信息选择 - 基于管理员在PRODUCTS表中输入的内容。
我一直在使用 PHP 循环/迭代 MAKE MODEL TRIMS 表,并在 PRODUCTS 表中搜索 PRODUCTS 表中是否存在 MAKE MODEL YEAR TRIM类型。但它需要对 PRODUCTS 表进行大约 800 次单独调用。
据了解,这不是最佳实践,可能会导致各种问题 - 对数据库进行多次调用并且效率不高。
我在另一个问题中被告知
这可以通过使用JOIN和WHERE语句的一次调用来完成。
我以前使用过表 JOINS,但不知道如何通过调用这么多 MAKES、MODELS、YEARS、TRIMS 来生成一份可用的 MAKES、MODELS、YEARS、TRIMS 标准列表供购物者选择。
我会很感激我能从你的例子中学到的任何东西:)
以下是用于将车辆相关详细信息添加到产品条目记录的管理员主密钥选择表示例:
表:制作
| 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表进行查询,我可以在其中生成一个表或列表,其中仅列出有产品的车辆类型。
因此,如果PRODUCTS表中没有适合带有SPORTRAC装饰的2001 FORD F150的产品- 那么我不想让购物者选择带有2001 FORD F150的SPORTRAC ,但我确实想给他们选择2001 福特 F150与XLT + LTD
所以真的 - 我只是想消除购物者对不存在的产品车辆细节的选择。
有人告诉我,这可以通过对数据库的一次 MySQL 调用来完成。有人告诉我,与其遍历所有品牌、型号和装饰并单独调用 PRODUCTS 表 - 我可以以某种方式使用表连接和 while 语句来获取所有潜在的MAKE MODEL TRIMS选项的列表,这些选项可供基于客户的客户使用仅关于 PRODUCTS 表中的内容
我知道如何通过调用 PRODUCTS 表然后循环并使用 PHP 清除结果中的重复项来做到这一点。但是有数以千计的产品,而且这些产品可以增长——所以我正在寻找实现这一目标的最佳实践方法。