我想加入我的产品表,同时接受订单。
我有一个orders.product_id,它总是有值。
但是,如果orders.bproduct_id
不为空,我们应该使用此产品ID而不是
->join('products')->on('products.id', '=', 'dealsite_orders.product_id')
(我正在使用Kohana查询生成器,但我接受查询答案)
我该怎么做?
当我这样做时:
JOIN ON COALESCE(orders.bproduct_id,product_id)
它不会返回任何行。调查后我发现了,因为它从bproduct_id获取列值,即使它是0?
答案 0 :(得分:1)
您正在寻找的on
表达式是这样的:
on products.id = coalesce(dealsite_orders.product_id, orders.product_id)
coalesce()
函数返回列列表中非空的第一个值。我不确定您是否要在dealsite
列或products
列上使用此功能。
请注意,使用coalesce()
可能会阻止使用索引。如果表很大,您可能需要重新制定查询以利用索引。