我只是在學習MYSQL查詢的來龍去脈,但我遇到了一個包含項目的障礙,我很感謝您提供一些解決方案。SELECT其中ID與列表中的一個匹配
我有兩個表,第一包含一個參考入口(entry_id)和相關聯的修改(mod_id)以及修飾的它是指(mod_name)
表1中的類別:exp_store_product_options
mod_id entry_id mod_name
3 2919 COLOR
4 2311 SIZE
5 2311 COLOR
6 3301 COLOR
第二表包含兩個相關字段,mod_id和opt_name
表2:exp_store_product_modifiers
mod_id opt_name
3 BLACK
4 EU 44
5 BROWN
6 BROWN
我想實現的是所有DISTINCT opt_name字段(通過mod_id上的連接)對應的entry_ids列表,我希望作爲一個整體傳入。
這裏是我到目前爲止的代碼,我相信它會做我所需要的,除了要求我循環遍歷每個條目ID的查詢,並且因爲每次迭代都無法滿足DISTINCT要求,一切都是獨特的。 (該{} sale_products標籤是從ExpressionEngine,並會在解析過程中環路爲我提供的是有關這個頁面
SELECT DISTINCT opt_name
FROM exp_store_product_options
INNER JOIN exp_store_product_modifiers
ON exp_store_product_options.product_mod_id=exp_store_product_modifiers.product_mod_id
{sale_products parse='inward'}entry_id = '{entry_id}' OR{/sale_products}
AND mod_name = 'SIZE'
的entry_id結果列表=========== =========================================
死後
爲了防止任何人試圖在ExpressionEngine的Expresso Store模塊中工作,並且需要在模板中構建一些基本的過濾器,下面是我最終要工作的代碼。非常類似於Ben的代碼,但是使用嵌入而不是直接插入entry_ids因爲問題解析順序:
模板:嵌入/ product_filter
{exp:query sql="SELECT DISTINCT opt_name
FROM exp_store_product_modifiers
LEFT JOIN exp_store_product_options
ON exp_store_product_options.product_mod_id = exp_store_product_modifiers.product_mod_id
WHERE exp_store_product_modifiers.entry_id IN ({embed:entry_ids})
AND exp_store_product_modifiers.mod_name = '{embed:filter_on}'"
}
<li><a href="#">{opt_name}</a></li>
{/exp:query}
與{}嵌入看起來像
{embed="embeds/product_filter" entry_ids="{sale_products backspace='1'}{entry_id},{/sale_products}" filter_on="SIZE"}
那麼你的問題是什麼?看來你已經找到了解決方案? – 2012-03-26 01:52:47
Ben,我的問題是如何從關聯條目列表中獲取唯一opt_name的列表。基本上,我想要的英文版本是,對於這個入口ID列表,找到所有相關的opt_name並返回每個相關的一個實例。如果這有助於... – evanr 2012-03-26 02:05:43
-evanr,請使用'IN'。我剛剛發佈了一個答案。 – 2012-03-26 02:07:51