0
我有一个名为products
的表,它包含所有产品,例如T恤和product_variants
,它们具有相关的颜色变体,例如。黑色,蓝色,绿色,每个都有stock
列 - 保留剩下的股票数量。MySQL - 如果在选择多行列值
我想建立一个查询,可以告诉我哪些产品完全售罄,哪些不是。
该stock
列应该是0被卖完,但如果它的NULL
或> 0
,它是在股票。当我们有无限的数量时使用NULL
。
这是下面的结果,我想获得:
product_id|soldOut|stock
------------------
1 |Yes |0
2 |Yes |0
3 |No |NULL
4 |No |1
什么,我试图做的,如下:
- 抓取所有产品
- 做一个加盟product_variants
- Group by product_id仅显示每个产品的一个结果。
- 选择的product_id和
IF(stock > 0 OR stock IS NULL, 'No', 'Yes') as SoldOUt
查询:
SELECT p.product_id, IF(pv.stock > 0 OR pv.stock IS NULL, 'No', 'Yes') as SoldOUt
FROM products p
JOIN product_variants pv ON (`pv`.`product_id` = `p`.`product_id`)
GROUP BY p.product_id
结果是soldOut
是不正确的 - 现在看来似乎只是需要变体排随机检查的这个stock
和答案。
取而代之的是,它应该检查所有的变体行,看看它们中的任何一个还没有soldOut(使用上面的if语句),然后返回该产品的最终答案。
我做了什么错了,怎么能做到这一点呢?
谢谢!给了我一种思考的新方式。 – Karem