MySQL,条件WHERE子句
以下是我的声明:MySQL,条件WHERE子句,mysql,Mysql,以下是我的声明: SELECT a.size AS 'size_id', b.size, a.stock, a.id AS 'stock_id', IFNULL(c.quantity,0) as 'cart_qty' FROM stock a JOIN sizes b ON a.size = b.id LEFT JOIN cart_items c ON a.id = c.stock_id WHERE a.product_i
SELECT
a.size AS 'size_id',
b.size,
a.stock,
a.id AS 'stock_id',
IFNULL(c.quantity,0) as 'cart_qty'
FROM
stock a
JOIN
sizes b ON a.size = b.id
LEFT JOIN
cart_items c ON a.id = c.stock_id
WHERE
a.product_id = '{$product['id']}'
AND
c.cart_id = '$cart_id'
AND
a.stock > 0
ORDER BY
b.display_order
在上面的示例中,$cart\u id可能为空,或者在“cart\u items”表中可能没有匹配项。如何重新表述上述内容,以便在购物车项目中没有匹配项的情况下,我仍然可以从与产品id匹配的库存中获得结果?但是如果购物车项目中有匹配项,那么我会得到附加列(购物车数量)我不确定您是否可以同时做到这两个。但如果您添加的
$cart\u Id为空,则第一个为空
AND ($cart_Id is null or c.cart_id = '$cart_id')
我不确定你是否两者都能做到。但如果您添加的$cart\u Id为空,则第一个为空
AND ($cart_Id is null or c.cart_id = '$cart_id')
将谓词移动到
子句上的:
LEFT JOIN
cart_items c ON a.id = c.stock_id AND c.cart_id = '$cart_id'
这样,如果cart\u items
中没有匹配项,您仍然可以从stock
中获得匹配product\u id
的结果。否则,如果购物车项目中存在匹配项,则正确填写附加列购物车数量。将谓词移至ON
子句:
LEFT JOIN
cart_items c ON a.id = c.stock_id AND c.cart_id = '$cart_id'
这样,如果cart\u items
中没有匹配项,您仍然可以从stock
中获得匹配product\u id
的结果。否则,如果cart\u项目中存在匹配项
,则会正确填写附加列cart\u数量
。如果要获取购物车中的任何产品信息,为什么要按购物车id限制结果?只需删除和c.cart\u id=$cart\u id
@Keiran-Tai即可在加载标准产品页面时运行。因此,如果产品已经在用户的购物车中,我想知道数量。如果您想获取购物车中的任何产品信息,为什么要按购物车id限制结果?只需删除和c.cart\u id=$cart\u id
@Keiran-Tai即可在加载标准产品页面时运行。因此,如果产品已经在用户的购物车中,我想知道数量。