我想弄清楚如何使用一個表格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