gpt4 book ai didi

php - 如何对查询中的父项施加限制,但如果没有可用的父项,还取其中的单个产品?

转载 作者:行者123 更新时间:2023-11-29 12:19:27 26 4
gpt4 key购买 nike

我们的情况是:

产品

一个产品可以有多个子项,也可以没有。如果它子产品,则它是产品。如果它没有子项,那么它就是一个简单产品。但是,每个 child 也是一个简单产品。

所以:

  • 123:父级
    • 124:简单
    • 125:简单
  • 140:简单
  • 141:父级
    • 142:简单
  • 160:简单
  • 170:简单

还有另一个表名为

产品特殊

其中包含 product_parent_idproduct_child_id。如果客户有 140 个parent 产品和 870 个simple 产品(不是子产品),我们希望将其限制为 250 个,并且只显示这 250 个产品,但包含子产品如果适用。前 250 个可能是它们自己的 simple 产品,也可能是 70 个 parent/180 simple

我对此很深入,所以我不确定这是否清楚,但任何想法将不胜感激。谢谢

最佳答案

您可以通过 UNION 来做到这一点:

SELECT id FROM product 
WHERE
(SELECT COUNT(*) FROM product_special WHERE product_parent_id=id)>0
UNION
SELECT id FROM product
WHERE
(SELECT COUNT(*) FROM product_special WHERE product_parent_id=id)=0
LIMIT 250

或者通过加入子查询并按其排序:

SELECT id, s.cnt AS child_cnt FROM product 
LEFT JOIN
(
SELECT product_parent_id, COUNT(*) cnt
FROM product_special
GROUP BY product_parent_id
) s ON s.product_parent_id=id
ORDER BY child_cnt DESC
LIMIT 250

关于php - 如何对查询中的父项施加限制,但如果没有可用的父项,还取其中的单个产品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29260617/

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