【发布时间】:2021-10-01 07:25:44
【问题描述】:
我有一个相当大的产品表,我需要一些智能解决方案来找出哪些产品(在 woocommerce 术语中)是简单的、可变的和变化的。
在下面的示例表中,ID 6 和 7 是简单产品(它们没有子代),1 和 4 是可变产品(它们有子代),而 2,3,5 是变体(它们是子代) .
| id | item_id | parent_id | other_columns |
|---|---|---|---|
| 1 | aaa | aaa | ... |
| 2 | aaa-1 | aaa | ... |
| 3 | aaa-2 | aaa | ... |
| 4 | bbb | bbb | ... |
| 5 | bbb-1 | bbb | ... |
| 6 | ccc | ccc | ... |
| 7 | ddd | ddd | ... |
我的目标是首先获取简单产品,然后获取变量产品并导入它们,最后获取变体并将它们导入现有的父变量产品。
我有一个简单产品的解决方案:
SELECT *
FROM (
SELECT *
FROM $table_name
WHERE item_id = parent_id
GROUP BY parent_id
HAVING COUNT(*) = 1
) AS ONLY_ONCE
我尝试过类似的变量产品 (count(*) > 1),但它不起作用...
对于变化我有:
SELECT *
FROM $table_name
WHERE item_id != parent_id
- 简单产品 - 选择 item_id 与 parent_id 相等且 parent_id 仅出现一次的所有产品。
- 可变产品 - 选择 item_id 与 parent_id 相等且 parent_id 出现多次的所有产品。
- 变化 - 选择所有 item_id 和 parent_id 不相等的地方。
如何编写这三个查询,尤其是第二个?任何帮助表示赞赏。
【问题讨论】: