$check = "SELECT up.quantity AS stockAble,
oh.quantity AS stockAsk
FROM stock_update up
JOIN orders oh
ON up.quantity > oh.quantity
AND up.package = oh.product_id
WHERE oh.reference_no = 12345
AND up.location_id = 4
";
在查询中,我根据引用号选择包的所有数量。
例如,在参考编号12345中,有三行三种产品,每种产品的数量不同。
Stock Ask
来自oh.quantity
的 orders
+---------------+--------------+------------+
reference_no product_id quantity
+---------------+--------------+------------+
12345 1 30
12345 2 10
12345 3 20
但是,我们需要检查我们的表中是否有可用的数量或产品。
Stock Available
中的 stock_update
+--------------+------------+
product_id quantity
+--------------+------------+
1 10
2 15
3 25
根据上面的两个表格,有一个产品的可用数量小于要求的数量。它位于1
如果条件是这样,那么我希望查询不返回任何内容或返回false。
如果只有所有产品和所要求的数量可用,则查询将返回true。
如何在我上面尝试的查询中执行此操作?非常感谢你的帮助。
答案 0 :(得分:1)
在你的评论之后,我得到了你想要的东西,我觉得它可能带有一些棘手的子查询但不合理。
我宁愿执行两个查询:
查明是否存在up.quantity < oh.quantity
SELECT 1
FROM stock_update up
JOIN orders oh
ON up.quantity < oh.quantity
AND up.package = oh.product_id
WHERE oh.reference_no = 12345
AND up.location_id = 4
LIMIT 1
如果没有(即上一个查询不返回任何结果),请执行原始查询
答案 1 :(得分:1)
请尝试此查询,如果任何产品的库存数量不足,则返回0:
SELECT (SUM(CASE WHEN up.quantity >= oh.quantity THEN 1 ELSE 0 END) = COUNT(*)) AS inStock
#up.quantity AS stockAble, oh.quantity AS stockAsk
FROM stock_update up
JOIN orders oh
ON up.product_id = oh.product_id
#AND up.quantity >= oh.quantity
WHERE oh.reference_no = 12345;