我正在处理产品数据,其中一部分具有以下结构(我们称之为product_serials):
该表是产品序列号的集合。该snapped
字段通过其序列号确定是否已购买特定产品。我试图查询该表获得的计数两者都连续,也一样的所有未卖出的连续product_id
使用一个SQL查询。到目前为止使用COUNT(ps1.id) AND COUNT(ps2.id) ... WHERE ps2.snapped = FALSE
似乎不起作用,它仍然为所有连续剧和未购买的连续剧计算相同的值,甚至夸大了计数,所以我肯定做错了什么。
我可能会错过什么?
我的 SQL 查询要求:
SELECT pd.id AS product_id, pd.description,
COUNT(pds.id) AS total, COUNT(pds2.id) AS available
FROM products pd
LEFT JOIN product_serials pds ON pds.product_id = pd.id
LEFT JOIN product_serials pds2 ON pds2.product_id = pd.id
WHERE pds2.snapped = FALSE
GROUP BY pd.id
ORDER BY pd.date_added DESC
在这里,您连接表(甚至将它们相乘),然后WHERE
对两者应用条件。
我建议如下:
SELECT product_id, count(serial), count(unpurchased)
FROM (SELECT product_id, serial,
CASE WHEN snapped THEN NULL ELSE 1 END AS unpurchased)
GROUP BY product_id
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句