gpt4 book ai didi

php - MySQL 查询 SELECT with IF(xxxx already exists) 递归

转载 作者:行者123 更新时间:2023-11-29 02:22:14 24 4
gpt4 key购买 nike

在这个自定义查询上我需要你的帮助,这对我来说有点难。这是 my_table 的示例:

_______________________________
| item_name | item_slug |
-------------------------------
| Black Pant | pant_black | Select : pick first color, 'pant' doesn't exists
| Red Pant | pant_red | Variation: 'pant_black'
| Yellow Pant | pant_yellow | Variation: 'pant_black'
| Tshirt | tshirt | Select : 'tshirt' exists
| Tshirt Black | tshirt_black | Variation: 'tshirt'
| Tshirt Red | tshirt_red | Variation: 'tshirt'
| Tshirt Yellow| tshirt_yellow| Variation: 'tshirt'
-------------------------------

我尝试得到的结果是:

如果( 'tshirt' && 'tshirt_black' 存在):

不要显示 'tshirt_black'、'tshirt_red'、'tshirt_yellow' 颜色并将它们放在 'variations' 数组中:

tshirt
| Variations:
|-> tshirt_black
|-> tshirt_red
|-> tshirt_yellow

如果('pant' 不存在 && 'pant_black' 存在):

取第一个找到的颜色“pant_black”,不显示“pant_red”、“pant_yellow”颜色并将它们放入“variations”数组中:

pant_black
| Variations:
|-> pant_red
|-> pant_yellow

注意:“裤子”不存在,只有颜色存在。

当存在无色名称('tshirt')时,我设法通过此查询使其工作:

SELECT * FROM my_table WHERE item_name NOT LIKE '% Black' AND item_name NOT LIKE '% Red' AND item_name NOT LIKE '% Yellow'

然后我在 PHP foreach() 中应用第二个查询,将“T 恤”变体放入数组中。

SELECT * FROM my_table WHERE item_slug LIKE '$item_slug%' AND item_slug != '$item_slug'

但我找不到递归检查 if('pant' donesn't exists) 然后使用找到的第一个颜色作为“基础”的方法。例如“pant_black”。

完美的解决方案是使其成为一体式查询。你怎么看?

编辑:编辑我的帖子以仅使用“item_slug”。

最佳答案

如果您想获得两列,一列包含基本名称,一列包含变体(或 NULL)(如果它是基本名称),那么您可以添加一个标志来查找基本名称。

也许这接近您想要的:

select ColorlessName,
(case when item_name <> ColorlessName then item_name end) as variation
from (select t.*,
(select t2.item_name
from my_table t2
where substring_index(t2.item_slug, '_', 1) = substring_index(t.item_slug, '_', 1)
order by length(t2.item_name) desc, t2.item_name
limit 1
) as ColorlessName
from my_table t
) t
order by ColorlessName, (variation is null) desc;

关于php - MySQL 查询 SELECT with IF(xxxx already exists) 递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29795771/

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