我想弄清楚如何使用一个表格JOIN来获取可供客户搜索的车辆制造,模型,年份和TRIMS标准的列表从。MySQL JOIN许多表格以获得一个表格的标准列表
已经有主密钥表,从该管理员从一系列车辆选项选择并输入关于该产品的PRODUCT表这些车辆相关的信息。
我想现在生成一个购物者列表,该列表仅反映可用的车辆详细信息选项 - 基于管理员已输入产品的表格。
我一直在循环/遍历品牌型号TRIMS与PHP和搜索产品表中的产品表中的品牌型号YEAR TRIM类型的存在表。但是,这大约需要800个个人对“产品”表的调用。
据了解,这是而不是的最佳做法,可能会导致各种问题 - 许多调用数据库的方式,并没有效率。
有人告诉我在另一个问题
,这可以使用JOIN 和 WHERE 陈述一个调用来完成。
我之前使用过表格连接,但没有看到如何通过一次调用这些许多MAKS,MODELS,YEARS,TRIMS来生成购物者可用的MAKS,MODELS,YEARS和TRIMS标准的列表从中选择。
我将不胜感激任何我可以在这里了解该从你的例子:)
这里是增加车辆的相关细节,以产品流入记录管理员主密钥选择表的例子:
表:不做
| Id | MAKE | // Admin table for selecting products related vehicle make
------------------
| 1 | FORD |
| 2 | CHEV |
| 3 | GMC |
| 4 | HONDA |
etc.
表:FORD
| 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.
这里是产品表管理员正在进入的产品/车辆的详细信息:
表:PROD UCTS
| 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产品表适合一个2001 FORD F150与SPORTRAC装饰 - 然后我不想给购物者SPORTRAC的选择与2001年FORD F150但我想给他们2001年福特F150的选择与XLT + LTD
所以真的 - 我只是想消除对购物者的不存在的车辆产品细节的选择。
有人告诉我,这可以在一个MySQL的调用的数据库中进行。我被告知,而不是循环所有的品牌,型号和修剪,并单独调用PRODUCTS表 - 我可以以某种方式使用表连接和while语句获得所有潜在的列表MAKE MODEL TRIMS根据产品表中的内容,可以为客户提供的选择只有
我看到了如何通过对产品表进行一次调用,然后循环并用PHP清除重复结果。但也有成千上万的产品,这些可能格罗 - 所以我期待实现这一目标的最佳实践方法。
嗯...你的表没有外键?你确定这是桌子的整个结构Make,Ford和FORD_F150_YEARS_TRIMS?你有每个品牌的桌子吗?福特桌子,本田桌子等? –
麦克布兰特的回答非常好。在最初的问题中,我假定这将是您正在使用的模式类型。 –
嗨米克尔 - 是的,有一张福特桌,一张本田桌和一张雪佛兰桌等等。每个包含产品可能创建的年份和修剪。 – KDawg