SELECT w.warehouse,
p.category,
p.product,
(select cr.min_stock
from critical cr
where cr.warehouse_id = w.id
and cr.product_id = p.id) as min_stock
FROM warehouse w,
product p
如果min_stock为空,如何使其显示为-1。
为了澄清,我不能使用join,我需要以这样的方式制作它,即使没有定义min_stock,所有产品和仓库都会显示min_stock。
建议优化将不胜感激。
答案 0 :(得分:1)
使用ifnull
功能。
SELECT w.warehouse,
p.category,
p.product,
ifnull((select cr.min_stock
from critical cr
where cr.warehouse_id = w.id
and cr.product_id = p.id),0) as min_stock
FROM warehouse w,
product p
希望这对你有所帮助。
答案 1 :(得分:0)
当然你可以使用JOIN
。你想要一个CROSS JOIN
,所以你应该明确你想要如何组合这两个表。然后,您可以使用CROSS JOIN
跟踪LEFT JOIN
:
SELECT w.warehouse, p.category, p.product,
coalesce(cr.min_stock, -1) as min_stock
FROM warehouse w cross join
product p left join
critical c
on cr.warehouse_id = w.id and cr.product_id = p.id;
答案 2 :(得分:0)
您可以批量更新所有值,或者在创建SQL行时将min_stock默认设置为-1。这就是我要做的事情:
UPDATE critical SET min_stock = -1 WHERE min_stock = NULL;