gpt4 book ai didi

mysql - 选择 ID 与列表之一匹配的位置

转载 作者:太空宇宙 更新时间:2023-11-03 11:09:03 25 4
gpt4 key购买 nike

我只是在学习 MYSQL 查询的来龙去脉,但我在一个项目中遇到了障碍,我希望能得到一些帮助以找到解决方案。

我有两个表,第一个包含对条目的引用 (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 上的连接)对应于我想作为 block 传入的 entry_id。

这是我到目前为止提出的代码,我相信它会做我需要的,除了要求我循环遍历每个条目 ID 的查询,并且由于每次迭代都失败了 DISTINCT 要求,一切都是不同的。 ({sale_products} 标签来自 ExpressionEngine,将在解析期间循环为我提供与此页面相关的 entry_id 结果列表

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'

============================================= =====

事后分析

以防万一其他人试图在 Expresso 的 ExpressionEngine 商店模块中工作,并且需要在您的模板中构建一些基本的过滤,这是我最终要工作的代码。与 Ben 的代码非常相似,但由于解析顺序问题,使用嵌入而不是直接插入 entry_ids:

模板:embeds/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}

{embed="embeds/product_filter" entry_ids="{sale_products backspace='1'}{entry_id},{/sale_products}" filter_on="SIZE"}

最佳答案

如果你有一个条目列表,你可以使用IN。此外,我将在此处使用 LEFT JOIN 而不是 INNER JOIN

SELECT DISTINCT opt_name
FROM exp_store_product_options
LEFT JOIN exp_store_product_modifiers
ON exp_store_product_options.product_mod_id = exp_store_product_modifiers.product_mod_id
WHERE exp_store_product_options.entry_id IN (1,2,3)
AND mod_name = 'SIZE'

关于mysql - 选择 ID 与列表之一匹配的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9865686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com